awkなしでフィールドを切り出す

スペース区切りの出力から特定のフィールドを取り出す方法といったらだいたい cut か awk ってことになると思うんですが,フィールドを取り出すためだけに awk を起動するのもなー と思う。で,cut を使おうとするが,これが空白の連続に対応できない。 よくあるプログラミング言語の split 関数みたいな感じだなと。

で結論から言うとっていうか結論を言ったらこの投稿は終了なんだけど,以下のようにする。

$ your-command | tr -s ' ' | cut -d ' ' -f2

これでも先頭に空白がある ps の出力とかは謎の 2-index みたいになってしまうけど まあ妥協。変えたかったら sed とかで頑張ればいいと思うけどそこまでやる価値があるのかは不明。

あとオプションと引数をつなげると文字数減らせるハックなど(無駄)

$ your-command|tr -s \ |cut -d\  -f2