2017-10-02 1 views
0

でのgrepを使用すると、私は次のパターンを使用し、このウェブサイトregexp simulatorでテスト私は、次のubuntuに</p> <p>をグレップを使用して、テストという名前のファイルでパターンを検索しようとしていますUbuntuの

./foldera/[hello]this.mp4 
./foldera/folderb/[hello]that.mp4 
./folderc/[these]hello.mp4 

の内容です検索するには、3つの行が一致しています。

しかし、ubuntuでは、次のコマンドを端末で実行しましたが、動作しません。端末に何も戻っていません。

[email protected]:~$ cat ~/Desktop/test 
./foldera/[hello]this.mp4 
./foldera/folderb/[hello]that.mp4 
./folderc/[these]hello.mp4 
[email protected]:~$ cat ~/Desktop/test | grep -E '.*\/[A-Za-z0-9\[\]]+\.mp4' 
[email protected]:~$ 

grepがファイル内のすべての行を検索できない理由は何ですか?

答えて

0

grep拡張正規表現では、大括弧で囲まれた大括弧をエスケープするためにバックスラッシュは使用されません。適切な方法は、角括弧の最初の文字に]を入れることです。これは空の文字セットを持つことができないため、リテラル文字として扱われます。

grep -E '/[]A-Za-z0-9[]+\.mp4' test.txt 

先頭に.*の必要はありません。 grepは、ライン上のものがパターンと一致するかどうかを単にチェックするので、先頭または末尾に一致するものを追加することは冗長です(一致する行の一部だけを出力する場合は-oを使用する場合のみ必要です)。

+0

いずれの式でも、角かっこで大括弧をエスケープするためにバックスラッシュを使用できますか?ありがとう –

+0

@LeeTimothyはい、PCREに基づいたほとんどのregexpエンジンで使用されています。 – Barmar

関連する問題