4

ファイル内の次の文字列を grep したいと思います。

directory1
directory2
directory3

grep で 3 つすべてを同時に grep する方法はありますか?

例えば:

cat file.txt | grep directory[1-3]

残念ながら、上記は機能しません

4

3 に答える 3

9

検索する必要がある文字列がこれらだけの場合は、-F(固定文字列の場合はgrep)を使用します。

grep -F "directory1
directory2
directory3" file.txt

より高度な正規表現を使用してgrepを実行する場合は、次を使用します-E(拡張正規表現を使用)。

grep -E 'directory[1-3]' file.txt

一部grepのs(GNU grepなど)は-E、この例が機能するために必要ではないことに注意してください。

最後に、正規表現を引用する必要があることに注意してください。そうしないと、シェルは最初にパス名の展開に従って正規表現を展開する傾向があります(たとえば、現在のディレクトリに「directory1」というファイル/ディレクトリがある場合は、シェルによってgrep directory[1-3]変換さgrep directory1れます)。

于 2013-02-09T01:18:35.807 に答える
1

どのシェルでテストしましたか?

ここ

grep directory[1-3]bash では動作しますが、zsh では動作しません

あなたはどちらかを引用することができます"directory[1-3]"

または逃げるgrep directory\[1-3\]

bash v4.2
zsh v5.0.2
grep (GNUgrep 2.14)
于 2013-02-09T01:53:22.197 に答える