bash: shortest way to get n-th column of output

Let’s say that during your workday you repeatedly encounter the following form of columnized output from some command in bash (in my case from executing svn st in my Rails working directory):

?       changes.patch
M       app/models/superman.rb
A       app/models/superwoman.rb

in order to work with the output of your command – in this case the filenames – some sort of parsing is required so that the second column can be used as input for the next command.

What I’ve been doing is to use awk to get at the second column, e.g. when I want to remove all files (not that that’s a typical usecase :), I would do:

svn st | awk '{print $2}' | xargs rm

Since I type this a lot, a natural question is: is there a shorter (thus cooler) way of accomplishing this in bash?

NOTE:
What I am asking is essentially a shell command question even though my concrete example is on my svn workflow. If you feel that workflow is silly and suggest an alternative approach, I probably won’t vote you down, but others might, since the question here is really how to get the n-th column command output in bash, in the shortest manner possible. Thanks 🙂

8 Answers
8

Leave a Comment