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*
c
0回以上一致します。おそらく*
シェルグローブのように動作しますか?+
これが組み合わされてどのような役割を果たすのか分かりません。*+
.
文字だけでなく、すべての文字と一致します.
。