パイプと接触して使用

パイプと接触して使用

touchパイプコマンドを使用して、コマンド出力に基づいて複数のファイルを生成できるようにしたいです。

たとえば、

grep "hello(.*)" file.txt | touch

しかし、動作しません!この目標をどのように達成できますか?

ベストアンサー1

コマンドtouch自体は読み取れませんが、stdin次のコマンドを使用すると読み取ることができますxargs

grep "hello(.*)" file.txt | xargs -I file_name touch file_name

編集する:

入力にバックスラッシュ()で終わる行がxargs含まれている場合、\名前に改行文字を含むファイルが生成されます。この質問は、この場合に予想される結果が何であるかを指定しません。

例: 入力

foo\
bar

コマンドにオプションを追加すると、2つのファイルを生成するように動作が変更されますfoo\nbar-d '\n'xargsfoo\bar

おすすめ記事