複数の文字列を含む変数から複数のパターンを特定する方法は?
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
パターンが正規表現ではなく固定文字列であることを示します。これにより、パターンマッチングが速くなります。これらの単語が正規表現の場合は、このオプションを削除してください。