I really like how nushell can parse output into it’s native structures called tables using the detect
command.
Unlike string outputs, tables allow for easy data manipulation through pipes like select foo
will select foo key and you can filter and even reshape the datasets.
This is great if you need to work with large data pipes like kuberneters so you can do something like:
kubectl get pods --all-namespaces | detect columns | where $it.STATUS !~ "Running|Completed" | par-each { |it| kubectl -n $it.NAMESPACE delete pod $it.NAME }
This looks complex but it parses kubectl table string to table object -> filters rows only where status is not running or completed -> executes pod delete task for each row in parallel.
Nushell take a while to learn but having real data objects in your terminal pipes is incredible! Especially with the detect
command.
There’s are few more shells that do that though nu is the most mature one I’ve seen so far.