我使用以下命令来grep子目录中的东西
find . | xargs grep -s 's:text'
Run Code Online (Sandbox Code Playgroud)
但是,这也找到了类似的东西 <s:textfield name="sdfsf"...../>
我该怎么做才能避免这种情况,所以它只能找到类似的东西 <s:text name="sdfsdf"/>
或者那个问题......也发现了 <s:text somethingElse="lkjkj" name="lkkj"
基本上s:text,并name应在同一行....
Der*_*k H 77
您希望该-w选项指定它是单词的结尾.
find . | xargs grep -sw 's:text'
cs0*_*s01 50
使用\b相匹配的"字边界",这将使得在全字搜索匹配.
所以你的grep看起来像
grep -r "\bSTRING\b"
Run Code Online (Sandbox Code Playgroud)
添加颜色和行号也可能有所帮助
grep --color -rn "\bSTRING\b"
Run Code Online (Sandbox Code Playgroud)
来自http://www.regular-expressions.info/wordboundaries.html:
有三种不同的职位符合词边界:
- 在字符串中的第一个字符之前,如果第一个字符是单词字符.
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符.
- 在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符.
joc*_*tee 28
你可以放弃 xargs通过递归进行grep搜索命令.而且你通常不需要's'标志.因此:
grep -wr 's:text'
Run Code Online (Sandbox Code Playgroud)
Bin*_*ati 11
使用-w全字匹配选项。示例如下:
[binita@ubuntu ~]# a="abcd efg"
[binita@ubuntu ~]# echo $a
abcd efg
[binita@ubuntu ~]# echo $a | grep ab
abcd efg
[binita@ubuntu ~]# echo $a | grep -w ab
[binita@ubuntu ~]# echo $a | grep -w abcd
abcd efg
Run Code Online (Sandbox Code Playgroud)