grepを使用して複数の文字列を正確に一致させる

grepを使用して複数の文字列を正確に一致させる

私は複数の文字列の正確な文字列一致を見つけるためにgrepを使用しています。

約1000万の行と10個の列を持つ大規模なデータファイルで、次の3つの文字列を探したいとします。以下の正確な文字列を含むすべての行を見つけるためにこのファイルを照会したいと思います。幸いなことに、1つの列にのみ「rs number」があるため、列を指定する必要はありません。 rs123 rs246 rs689653

次の式を試しましたが、この文字列を含むすべてのオプションが返されました。場合によっては、正確に一致する行だけが必要なため、「rs123456」などの行が表示されます。

grep -E 'rs123|rs246|rs689653' queriedfile.txt

^その後、andを使用して次の式を試しましたが、$私のクエリと一致する結果が得られませんでした(いくつかあることがわかりました)。

grep -E '^rs123$|^rs246$|^rs689653$' queriedfile.txt

ベストアンサー1

-w単語全体の一致を制限するためにコマンドラインオプションを追加できます。

$ printf 'rs123456\nrs246\n' | grep -wE 'rs123|rs246|rs689653'
rs246

または、単語アンカーを明示的に追加します。

$ printf 'rs123456\nrs246\n' | grep -E '\b(rs123|rs246|rs689653)\b'
rs246

(あなたは近い^-$しかしそれはワイヤー-アンカー)。

おすすめ記事