GNU/Linux >> Linux の 問題 >  >> Linux

複数の引数の xargs 置換

xargs を知らない それを行うオプションですが、 bash -c の呼び出しで同様のことを実現できます :

$ echo -e "line 1\nline    2\nline 3" | xargs bash -c 'echo "${@}" DONE' _
line 1 line 2 line 3 DONE

xargs に注意してください を提供しません -L を指定しても、引数として . -d を使用することもできます 改行がアイテムを区切ることを指定します(gnu xargsのみだと思います)。以下を対比してください:

$ echo -e "line 1\nline    2\nline 3" |
  xargs bash -c 'printf "<%s>\n" "${@}" DONE' _
<line>
<1>
<line>
<2>
<line>
<3>
<DONE>

$ echo -e "line 1\nline    2\nline 3" |
  xargs -d\\n bash -c 'printf "<%s>\n" "${@}" DONE' _
<line 1>
<line    2>
<line 3>
<DONE>

改行を \nul に変換します ターミネータ、xargs -0 を使用

$ echo -ne 'line 1\nline 2\nline 3\n' | tr '\n' '\0' | xargs -0 -Ix echo x DONE
line 1 DONE
line 2 DONE
line 3 DONE

Linux
  1. 6 Expectスクリプトのコマンドライン引数の例

  2. Bashスクリプトで1行ずつ読む

  3. 一行FTPサーバー

  1. 複数行の出力を 1 行に連結する方法は?

  2. zip アーカイブ内の複数のファイルの内容を印刷する

  3. JSONプリティプリントを1行に変換する

  1. 検索-exec+対検索| Xargs:どちらを選択しますか?

  2. 単純なボンド スループットに困惑し、ギグ以上は得られない

  3. 行が 60 文字を超える場合に改行を挿入する方法