0

私はシェルに取り組んでいます。ファイルAのファイル内容を読み取り、ファイルBgrepでコマンドを実行するライナーを1つ書きたいと思います。

たとえば、2 つのファイルがあるとします。

次の値を持つdataFile.log

abc

xyz

...等々

searchFile.logで abc と grep を読むようになりましたgrep abc searchFile.log

同じシェルスクリプトがありますが、1つのライナーが必要です

for i in "cat dataFile.log" do grep $i searchFile.log done;
4

3 に答える 3

1

これを試して:

grep -f dataFile.log searchFile.log

固定文字列として grep する場合は が必要-Fであり、dataFile.log のテキストを正規表現として一致させたい場合は、-Eまたはを使用することに注意してください。-P

于 2013-02-15T12:42:44.220 に答える
0

次はどうですか:空白行と#コメントも無視します:

ファイルの読み取り中。if [["$ FILE"!= [/ a-zA-Z0-9] *]]; 続行します。fi; grep-hパターン"$FILE"; 終わり;

注意:これはコンパイルされていません。

于 2013-02-15T11:41:59.770 に答える
0

オプションを使用grep -fできます:

cat dataFile.log | grep -f searchFile.log

編集

OK、今私は問題を理解しています。dataFile.logからgrepまでのすべての行を使用しsearchFile.logます。私もあなたが持っているのを見るvalue1|value2|...ので、あなたの代わりにgrepが必要egrepです。

これで試してください:

for i in `cat dataFile.log`
do
   egrep "$i" searchFile.log
done

編集2

チェプナーの提案に従う:

egrep -f dataFile.log searchFile.log
于 2013-02-15T11:37:46.390 に答える