- ベストアンサー
findコマンドについて
unix コマンドについて質問です。 ファイル1の中に"A=1" ," B=2", "C=3"という文字列が入っているとします。 ファイル2の中に"D=1" , "E=2", "F=3"という文字列が入っているとします。 そのことを自分は知りません。 Aという文字が入っているファイルを探す為、 以下のfindコマンドを打ち、ファイル1のlsの結果が表示されました。 find ./ -type f -exec grep 'A' {} \; -ls その後、出力されたファイル1の中からBとCでgrepしてB=2", "C=3"を表示したいと思います。 上のコマンドと併せて一度でできるコマンドを教えていただけないでしょうか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
xargsで繋いでもいけるような気がします。 find ./ -type f -exec grep -q 'A' {} \; -print | xargs grep \[BC\] 見たいな具合に。 ファイル名も欲しければ、 find ./ -type f -exec grep -q 'A' {} \; -print | xargs grep \[BC\] /dev/null かな。
その他の回答 (1)
- ChateauAres
- ベストアンサー率43% (64/148)
あまり悩まずに素直にコマンド作った方が早いと思います。 要件がよく理解できないのですが「文字列Aを含むファイルにて文字列Bと文字列Cのgrep結果を得る」と解釈します。 以下のようなスクリプトを作成します。(便宜上、aresgrepとでもしましょう) # find ./ -type f -exec grep -q $1 {} \; -fprintf /tmp/aaa$$ "grep $2 %p\n" sh /tmp/aaa$$ rm -f /tmp/aaa$$ # で、次のように実行できるはずです。 aresgrep A B aresgrep A C もし要件が違ってましたら、上記スクリプトの修正で対応できると思いますがいかがでしょうか?
お礼
回答ありがとうございます。 参考にさせていただきます。
お礼
回答ありがとうございます。 こういう風にコマンドを繋ぐのですね。 大変参考になりました。