有没有一种简单的方法可以在文本文件(源代码)中搜索特定整数的所有实例。这不应在恰好包含整数作为子字符串的较大数字上触发,但它不能简单地排除此类行,因为它们可能包含这两种情况:
正在搜索“6”...
int a=6; // found
int b=16; // not found (despite the '6' in '16')
int c=6, d=16; // found
我真的在寻找一种命令行方法,但我也很好奇是否有自由软件GUI 类型的编辑器就可以做到这一点。
答案1
grep -E '\b6\b'
\b
是一个“词边界”
-w
编辑:在将@nobar指向正确的方向后,他在手册页中找到/指出了快捷方式选项(word-regexp),这将上面的内容简化为:
grep -w 6
如果经常使用,您可以使用类似的功能
wgrp(){ grep -w "$1" "$2"; }
注意(致@glenn-jackman):如果您不在"$2"
此处引用,则可以将该函数用作管道过滤器。但是,是的,它不适用于带空格的文件名。
在阅读了@Gilles 的另一个很好的答案后,我现在建议
igrp(){ grep -E "(^|[^0-9])$1($|[^0-9])" "$2"; }
答案2
您可以使用正则表达式搜索特定整数。搜索前面带有数据开头或非数字字符的数字,数字后面也同样。
grep -e '^6$' -e '^6[^0-9]' -e '[^0-9]6$' -e '[^0-9]6[^0-9]' # BRE syntax
grep -E '(^|[^0-9])6($|[^0-9])' # ERE syntax
其他答案中建议的全字搜索会错过诸如 之类的点击foo6bar
。 (这对于您的用例来说可能不是问题,但这是您所要求的。)
任何半严肃的文本编辑器或查看器(例如less
)都有正则表达式搜索。检查其文档以了解它使用的正则表达式语法。