![パイピング出力に関するUNIX作業の質問に関して何を求めているのかわかりません。 [閉鎖]](https://linux33.com/image/55664/%E3%83%91%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E5%87%BA%E5%8A%9B%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8BUNIX%E4%BD%9C%E6%A5%AD%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6%E4%BD%95%E3%82%92%E6%B1%82%E3%82%81%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%20%5B%E9%96%89%E9%8E%96%5D.png)
xxx
デフォルトでは、ファイルの内容をプログラムに送信し、出力をyyy
別のプログラムの入力にパイプして出力をファイルzzz
に追加するコマンドを思い出す必要がありますxyz
。
答え1
いつも仕事を最も簡単なステップに分けて合わせてみてください。最初の部分を始めるためにサンプルファイルを直接作成しましょう。
$ echo -e "line 1 ABA\nline 2 ABB\nline 3 CCC\n" > xxx
$ cat xxx
line 1 ABA
line 2 ABB
line 3 CCC
これでファイルができましたxxx
。今、私たちはプログラムとして機能できるものを使うべきですyyy
。 Unixには多くの代替コマンドがあるので、grep
1つを選択します。 Grepは私たちが検索するように指示した文字列を見つけるので、「AB」を含む文字列を見つけるように指示しましょう。
$ cat xxx | grep AB
line 1 ABA
line 2 ABB
だから私たちは最初の2つの要件を満たしました。
cat xxx
ファイルの内容を送信しますxxx
。cat xxx | grep AB
プログラムにコンテンツを送信しますyyy
。
したがって、次のポイントである「他のプログラムの入力に出力をパイプすることzzz
」は、同じコマンドで実行する作業に似ているため、かなり簡単にする必要がありますgrep
。それでは、grep
次のような他のものを試してみましょう:
$ cat xxx | grep AB | grep BB
line 2 ABB
さて、ほぼすべて来ました。 3回目の要件を完了しました。
cat xxx | grep AB | grep BB
出力をgrep AB
入力に取り込み、独自の出力を生成します。
したがって、最後のポイントは追加の出力が必要であることzzz
ですgrep BB
。それは簡単です。初期ファイルがどのように設定されているかがわかったら、コマンドの出力を取得してファイルにダンプするxxx
ファイルリダイレクトを使用しました。>
リダイレクタは、ファイル>
がすでに存在していても、コンテンツでファイルを上書きします。しかし、追加する必要があります。幸いにも、他のリダイレクタを使用できます>>
。これにより、コマンド出力が既存のファイルに追加されます。
すでに存在するファイルについては、ファイルをビルドする必要がありますxyz
。それでは、echo
先ほど作った方法を使ってみましょうかxxx
?
$ echo -e "previous line 1\nprevious line 2" > xyz
$ cat xyz
previous line 1
previous line 2
それでは、私たちが書いているコマンドの出力を添付してみましょう。
$ cat xxx | grep AB | grep BB >> xyz
結果を確認できます。
$ cat xyz
previous line 1
previous line 2
line 2 ABB
これで終わりました。