変数に複数の文字列がある場合は、複数のパターンをgrep

変数に複数の文字列がある場合は、複数のパターンをgrep

複数の文字列を含む変数から複数のパターンを特定する方法は?

words=(hello world foo bar)
grep -e ${words}  text.txt

wordsまた、すべてのユーザー入力を含む変数として使用します。変数の型を変更して内部のすべての文字列を特定するために使用できる方法はありますか?

text.txt問題は、上記のコードを試してみると、grepコマンドを満たすかどうかにかかわらず、すべての結果が得られることです。

答え1

words=(hello world foo bar)
grep -F -f <(printf "%s\n" "${words[@]}") text.txt

これは以下を使用します。プロセスの交換単語ごとに 1 行の「ファイル」を提供します。この-fオプションは、grepファイルから一致するパターンのリストを読み取るように指示します。

この-Fオプションは、grepパターンが正規表現ではなく固定文字列であることを示します。これにより、パターンマッチングが速くなります。これらの単語が正規表現の場合は、このオプションを削除してください。

関連情報