我有一个包含大量垃圾的文件(奇怪的字符、注释等),该文件包含一些我想用 grep 提取的链接。文件很大,一行2000多字。如果我尝试这条线完美匹配
egrep -Eo --text "abcde192848.bmp" Untitled\ 1.txt
正确返回abcde192848.bmp。但是有很多bmp链接,如果我尝试却无法获取它
egrep -Eo --text "^abc*+.bmp" Untitled\ 1.txt
什么都不返回。我的问题是:如何从一行 grep 所有以 abc 开头、以 bmp 结尾的字符串?该文件与此类似
***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
不起作用
^
是行锚点的开始,因此您最多只能在每行获得一个匹配项,而不是该行中的所有匹配项c*
将匹配c
零次或多次,也许您打算*
像 shell glob 一样工作?+
不确定这结合起来会做什么*+
.
将匹配任何字符,而不仅仅是.
字符