- 締切済み
grepの使い方
"A.lst"と"B.lst"の2つのファイルがあります。 ともにディレクトリ階層の一覧が記述されています。 2つのファイルを比較して、A.lstのディレクトリ階層の文字列を 含む行を、B.lstから抽出して、リダイレクトで出力するには、 どういうコマンド操作になるのでしょうか。 特定の文字列ならば単純に、cat B.lst | grep moziretsu > sample.lst でいいわけですが、この文字列がA.lstファイル内に複数行あり、 それを順にgrepするにはどうすればいいのかがわかりません。 シェルもただいま勉強中です。 よろしくご教授願います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- maku_x
- ベストアンサー率44% (164/371)
回答No.2
使用されているシェルが bash で、ディレクトリ階層の一覧に、空白が含まれていなければ、 for fdir in `cat B.lst`; do grep $fdir A.lst; done で可能です。 空白が含まれている場合はどうしましょうね。 for fdir in `cat B.lst | sed 's/^.*$/\"&1\"/'`; do grep $fdir A.lst; done では動きませんかね。
- gatyan
- ベストアンサー率41% (160/385)
回答No.1
んー 勉強ついでに fgrep コマンドを調べてみる もしかしたら、 grep -F とかで fgrep 相当になるかも?
質問者
お礼
返信ありがとうございます。 なるほど、fgrep(grep -f)は、文字列パターンを ファイルから1行ずつ繰り回せるのですね。 テストしてみたいと思います。 ありがとうございました。
お礼
返信ありがとうございます。 空白は含まれていませんので、最初のシェルでいけると思います。 検証させていただきます。 ありがとうございました。