我想显示整个目录中使用的图标列表而不重复,例如我有:
<span class="icon icon-test"></span> (in test1.html)
<span class="icon icon-wrench"></span> (in wrench.html)
<span class="icon icon-test"></span> (in test3.html)
想要的输出:
test
wrench
到目前为止,我尝试过这样的想法:
grep -onr 'icon-.* "$' .
答案1
和grep -P
:
grep -Phro 'icon-\K[^" ]+' . | sort -u
没有grep -P
:
grep -hro 'icon-[^" ]\+' . | cut -d- -f2 | sort -u
解释:
-P
使用 Perl 兼容正则表达式 (PCRE) 代替基本正则表达式 (BRE)-h
不打印文件名-r
对所有文件递归运行-o
仅输出匹配项而不是整行[^" ]+
匹配 1 个或多个不是双引号或空格的字符,您可以将其更改为例如,[a-z]+
如果您知道名称都是 az 中的小写字符。注意:因为BRE
您需要转义量词:\+
。| cut -d- -f2
icon-
从 grep 输出中删除。 (有很多方法可以实现这一点,如果你想坚持使用grep
,你可以使用grep -o '\w\+$'
)。| sort -u
对输出进行排序并删除重复项。