ファイルの「完璧な」egrep、ただ多くのゴミと1つの大きな行

ファイルの「完璧な」egrep、ただ多くのゴミと1つの大きな行

grepを使用して抽出したいいくつかのリンクを含む多くのジャンク(奇妙な文字、コメントなど)のファイルがあります。ファイルは1行に2,000語を超えるほど非常に大きいです。この行を試してみると完璧にマッチします。

egrep -Eo --text "abcde192848.bmp" Untitled\ 1.txt

Abcde192848.bmp が正しく返されます。しかし、BMPリンクが多いので試しても得られません。

egrep -Eo --text "^abc*+.bmp" Untitled\ 1.txt

何も返しません。私の質問は:abcで始まり、bmpで終わるすべての文字列を1行でgrepする方法は何ですか?ファイルはこれに似ています

***strangechars***urlabc1239.bmp****sstrangechars***urlabc394848.bmp***

この行は非常に大きく、.bmp "url"がたくさん含まれています。私が望む出力を返さなければなりません。

abc449048.bmp
abc231848.bmp
abc144848.bmp

ベストアンサー1

努力する

grep -o 'abc[a-z0-9]*\.bmp'
  • [a-z0-9]*ゼロ個以上の小文字と数字と一致します。
  • \..文字通り文字と一致します。


なぜ^abc*+.bmp動作しないのですか?

  • ^行アンカーの始まりなので、その行のすべての一致項目ではなく、行ごとに最大1つの一致のみを取得できます。
  • c*c0回以上一致します。おそらく*シェルグローブのように動作しますか?
  • +これが組み合わされてどのような役割を果たすのか分かりません。*+
  • .文字だけでなく、すべての文字と一致します.

おすすめ記事