xargs で行を連結する

xargs は実行するコマンドが与えられなかったときは echo を使うので、これによって標準入力から受け取った行を連結することができる。
Solaris の man xargs にのってた。

次の例では、カッコで囲まれたコマンドの実行結果を 1 行にまとめ、それを log というファイルの終わりに追加出力することを指定しています。

(logname; date; printf "%s\n" "$0 $*") | xargs >>log

http://docs.sun.com/app/docs/doc/819-1210/6n3j74jv1?q=xargs&a=view

cat xxx.txt | xargs -n 3

とすると3行ずつをまとめてくれる。
Solaris の man はなかなか面白い使用例が載っていていいなあ。


[追記:2006-11-18]
とはいうものの、当然1行が長すぎる場合は正しく扱えないので、推奨はできない。


[追記:2006-11-20]

  • n は引数の個数を指定するので、入力行に複数の単語がある場合は -L の方がいい。