grep
それ自体はそうすることができます。フラグを使用するだけ-f
です:
grep -f <patterns> <file>
<patterns>
各行に 1 つのパターンを含むファイルです。そして<file>
、検索したいファイルです。
各行の内容が正規表現のように見えても、強制的grep
に各行をパターンと見なすには、フラグを使用する必要があることに注意してください-F, --fixed-strings
。
grep -F -f <patterns> <file>
あなたが言ったように、ファイルがCSVの場合、次のことができます。
grep -f <(tr ',' '\n' < data.csv) <file>
例として、次の行を含むファイル「a.txt」を考えてみましょう。
alpha
0891234
beta
さて、ファイル「b.txt」には次の行があります。
Alpha
0808080
0891234
bEtA
次のコマンドの出力は次のとおりです。
grep -f "a.txt" "b.txt"
0891234
for
ここでループする必要はまったくありません。grep
自体がこの機能を提供します。
今あなたのファイル名を使用して:
#!/bin/bash
patterns="/home/nimish/contents.txt"
search="/home/nimish/another_file.csv"
grep -f <(tr ',' '\n' < "${patterns}") "${search}"
ファイルにある区切り記号に変更','
できます。