パイピング出力に関するUNIX作業の質問に関して何を求めているのかわかりません。 [閉鎖]

パイピング出力に関するUNIX作業の質問に関して何を求めているのかわかりません。 [閉鎖]

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には多くの代替コマンドがあるので、grep1つを選択します。 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

これで終わりました。

おすすめ記事