xargs
にセパレータとしてonly改行を使用させることは可能ですか? (それが重要な場合、LinuxおよびOS Xのbashで)
知っている -0
を使用できますが、すべてのコマンドがNUL区切りの出力をサポートしているわけではないため、PITAです。
の線に沿った何か
alias myxargs='Perl -p -e "s/\n/\0/;" | xargs -0'
cat nonzerofile | myxargs command
うまくいくはずです。
GNU xargs(Linuxではデフォルト、OS XのMacPortsからfindutils
をインストールしてインストール)サポート -d
を使用すると、カスタム区切り文字を指定できます 入力できるため、次のことができます
ls *foo | xargs -d '\n' -P4 foo
Bashでは、while-readループを優先して、少しトリッキーなことは何でもxargsを避けたいと思っています。ご質問は、while read -ar LINE; do ...; done
は仕事をします(LINEで配列構文を使用することを忘れないでください。例:${LINE[@]}
(行全体)。これにはトリックは必要ありません。デフォルトでは、readは\n
を行終了文字として。
SO xargsとwhile-readループの長所と短所についての質問を投稿する必要があります... done!
cat file | xargs | sed 's/ /\n/ig'
これは、標準のLinux bashツールを使用して、スペースを改行に変換します。
標準バージョンではありません。私はそれを行うハッキングされたバージョンを持っています-「find ... -print0 | xargs -0 ...
」について知る前にそれを使用しました。コピーが必要な場合は私に連絡してください-私のプロフィールを参照してください。 (ロケットサイエンスはありません。ただし、それで問題が解決します。完全なxargsレプリカではありません。)