回答:
他の人が述べたように、ジェネリックxargs
はこれだけではできません。一般的なUnixツールにこだわっcut
て、xargsに送信する前にコマンドを使用して余分な情報を取り除く必要があります。
入力が次のようになっていると仮定します。
./file1 "matching string"
./file2 "matching 2"
を使用|cut -f 1 -d ' ' | xargs -n 1 vi
してコマンドを実行できます。
cut -f 1 -d ' '
コマンドは、列1の内容のみを出力に送信します。xargs -n 1 vi
VIを実行しますが、一度に一つのファイルを使用するようにxargsのを伝えます。-n 1
単一のviインスタンスを使用してすべてのファイルを編集する場合(ファイル間でコピー/貼り付けバッファーを保持する場合)を削除してもかまいません。
xargs自体でこれを行うことはできません。
そのため、オプションは、grep
に渡す必要があるものだけを出力するかxargs
、パイプを介しcut
て必要なものを削除します。
これは* nixの方法であることを忘れないでください-各ユーティリティを可能な限りフォーカスし、それらを組み合わせて使用して結果を達成します(複数のユーティリティで機能を複製するのではなく)。
GNU Parallelを使用すると、次のことができます。
... | grep ... | parallel --colsep ' +' -X --tty vi {1}
emacsでも動作します:
... | grep ... | parallel --colsep ' +' -X --tty emacs {1}
GNU Parallelは次の方法で簡単にインストールできます。
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
詳細については、イントロビデオをご覧ください:https : //www.youtube.com/playlist?list=PL284C9FF2488BC6D1
チュートリアルをご覧ください(man parallel_tutorial)。あなたはそれを愛しているコマンドラインです。
cut
です?