xargsの改行での分割とスペースでの分割
OS Xでbashのスクリプトを書いていたのだけど、for文で書いている箇所をxargsで処理したいなと思い、書き直そうとしてxargsをあまり知らなかったのでメモ。
xargsはデフォルトでLFを分割するみたいだ。
$ printf 'aaa\nbbb\nccc' | xargs -I{} echo '{}'
aaa
bbb
ccc
-nを使ってあげればスペースでも分割できるみたいだけども、どういうことなんだろう。引数としては'aaa bbb ccc'
で一つだと思うんだけど。
$ echo 'aaa bbb ccc' | xargs -I{} -n 1 echo '{}'
aaa
bbb
ccc
-nを付加しないと、echoの内容がそのまま出力される。
$ echo 'aaa bbb ccc' | xargs -I{} echo '{}'
aaa bbb ccc
今までは、findでヌル文字を付けてxargsでヌル文字を区切り文字として分割する、というような使い方しかしてこなかったので調べてよかった。