Unix 如何使整个单词变大

Unix 如何使整个单词变大,unix,grep,Unix,Grep,我正在使用下面的命令grep subdirs中的内容 find . | xargs grep -s 's:text' 但是,这也可以找到类似 我能做些什么来避免这种情况,让它只找到像 如果您只想过滤掉剩余的文本部分,您可以这样做 xargs grep-s's:text' 这应该只找到在最后一个t之后有空格的s:text实例。如果需要查找只有名称元素的s:text实例,可以将结果通过管道传输到另一个grep表达式,或者使用正则表达式仅过滤所需的元素。您希望-w选项指定它是单词的结尾 find.|

我正在使用下面的命令grep subdirs中的内容

find . | xargs grep -s 's:text'
但是,这也可以找到类似

我能做些什么来避免这种情况,让它只找到像


如果您只想过滤掉剩余的文本部分,您可以这样做

xargs grep-s's:text'


这应该只找到在最后一个t之后有空格的
s:text
实例。如果需要查找只有名称元素的
s:text
实例,可以将结果通过管道传输到另一个
grep
表达式,或者使用正则表达式仅过滤所需的元素。

您希望
-w
选项指定它是单词的结尾


find.|xargs grep-sw's:text'

通过递归进行grep搜索,可以删除
xargs
命令。你通常不需要“s”标志。因此:

grep -wr 's:text' 

使用
\b
匹配“单词边界”,这将使您的搜索仅匹配整个单词

所以你的grep看起来像

grep -r "\bSTRING\b"
添加颜色和行号也可能有帮助

grep --color -rn "\bSTRING\b"
发件人:

有三种不同的位置可以作为单词边界:

  • 如果字符串中的第一个字符是 单词字符
  • 在字符串中的最后一个字符之后,如果 字符是一个单词字符
  • 在字符串中的两个字符之间, 其中一个是单词字符,另一个不是单词字符
你可以试试rg,:


应该这样做

这是设置单词边界的另一种方法,请注意,如果没有引号,它将无法工作:


grep-r'\.

有人读过这个标题“如何为全世界grep”?@Earlz,没有,主要是因为我用谷歌搜索了“grep-whole-word”。如果“文本”在输出的末尾呢?在您的解决方案中不会跳过它吗?虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-我确实给出了答案:rg-w's:text”。建议使用非标准工具可能还有其他原因,但作为如何使用标准
grep
解决这一问题的解决方案,这并不是特别令人信服或满意,特别是考虑到
grep
具有相同的选项,它取决于directiIt的深度和脂肪程度,取决于文件的数量,ripgrep可以更快,find->xargs为每个文件创建一个新的进程。
rg -w 's:text' .