我有一个简单的解决方案的问题。我需要 grep Tron*.exe 出来
<li><a href="Tron%20v9.6.1%20(2016-10-03).exe"> Tron v9.6.1 (2016-10-03).exe</a></li>
<li><a href="Tron%20v9.6.1%20(2016-10-03).torrent"> Tron v9.6.1 (2016-10-03).torrent</a></li>
<li><a href="md5sums.txt"> md5sums.txt</a></li>
<li><a href="md5sums.txt.asc"> md5sums.txt.asc</a></li>
<li><a href="sha256sums.txt"> sha256sums.txt</a></li>
<li><a href="sha256sums.txt.asc"> sha256sums.txt.asc</a></li>
Run Code Online (Sandbox Code Playgroud)
即使文本更改了版本号或日期,我也需要它来为列表工作。
grep使用 PCRE ( -P),仅提取匹配部分 ( -o):
grep -Po '"\KTron[^"]*\.exe' file
Run Code Online (Sandbox Code Playgroud)
在正则表达式模式中:
"匹配文字",\K丢弃匹配
Tron 匹配文字 Tron
[^"]* 匹配零个或多个不属于的字符 "
\.exe 匹配文字 .exe
例子:
$ cat file.txt
<li><a href="Tron%20v9.6.1%20(2016-10-03).exe"> Tron v9.6.1 (2016-10-03).exe</a></li>
<li><a href="Tron%20v9.6.1%20(2016-10-03).torrent"> Tron v9.6.1 (2016-10-03).torrent</a></li>
<li><a href="md5sums.txt"> md5sums.txt</a></li>
<li><a href="md5sums.txt.asc"> md5sums.txt.asc</a></li>
<li><a href="sha256sums.txt"> sha256sums.txt</a></li>
<li><a href="sha256sums.txt.asc"> sha256sums.txt.asc</a></li>
$ grep -Po '"\KTron[^"]*\.exe' file.txt
Tron%20v9.6.1%20(2016-10-03).exe
Run Code Online (Sandbox Code Playgroud)