1

ファイルからいくつかの一致する条件を見つけて、以前に一致したファイルで次の条件を再帰的に見つける必要があります、私はこのようなものを持っています

input.txt

123

22

33

次のファイルで上記の用語を見つける必要があるファイル、たとえば10個のファイルで123が見つかった場合、22個はこれらの10個のファイルでのみ検索する必要があります...ファイルの例はf1、f2、 f3、f4 ..... f1200

つまり、grep -w "123" f*|を実行する必要があるようなものです。grep -w "123" | ....。

それらを手動でリストすることはできないので、もっと簡単な方法はありますか?

4

3 に答える 3

1

awk スクリプトを使用してこれを解決できます。同様の問題が発生しましたが、これは正常に機能します。

awk '{ if(!NR){printf("grep -w %d f*|",$1)} else {printf("grep -w %d f*",$1)} }' input.txt | sh

それは何をしますか?

  • input.txt を 1 行ずつ読み取ります
  • 最後のレコードになるまで、 grep -w %d | を出力します。(ここにパイプがあることに注意してください)
  • その後、実行のためにシェルに送信され、結果がパイプでパイプされます
  • 端に到達すると、パイプは回避されます
于 2012-06-01T03:32:15.720 に答える
0

おそらく、メタプログラミングの観点をとることが役立つでしょう。一連のコマンドをgrep出力しました。grepまたは、小さなPERLプログラムを作成します。気分が良ければ、たぶんルビー。

于 2012-06-01T03:30:14.340 に答える
0

を使用grep -lwして、一致したファイル名のリストを書き込むことができます (最初の一致が見つかった後に停止することに注意してください)。

ファイル名のリストを取得し、それをループの次の繰り返しに使用します。

于 2012-06-01T03:37:16.457 に答える