$ seq 1 3
1
2
3
$ seq 1 3 | xargs echo
1 2 3
$
seq 1 3
標準出力から1行に1つの項目を一覧表示するコマンドを精神的に置き換えます。予期したもの(例:echo 1; echo 2; echo 3;
別の行()の項目)をより多くまたは少なくするにはどうすればよいですか?
答え1
xargs
コマンドラインに複数の引数が配置されることがよくあります。一度に1つのパラメータに制限するには、次の-n
オプションを使用します。
$ seq 3 | xargs -n 1 echo
1
2
3
文書
からman xargs
:
-n最大パラメータ
コマンドラインごとに最大 max-args 個の引数を使用します。サイズを超えると(-sオプションを参照)、-xオプションが指定されていない限り、max-argsよりも少ない引数が使用されます。この場合、xargsは終了します。
-n
間の違い-L
-L
同様ですが、1つの追加機能があります。とは異なり、-n
末尾のスペースがある行は次の行に続きます。観察する:
$ echo $'1 \n2\n3\n4'
1
2
3
4
$ echo $'1 \n2\n3\n4' | xargs -L 1 echo
1 2
3
4
$ echo $'1 \n2\n3\n4' | xargs -n 1 echo
1
2
3
4
答え2
より多くの研究で答えが明らかになったxargsが各入力行に対してコマンドを1回実行するようにします。:
$ seq 1 3 | xargs -L 1 echo
1
2
3