如何在文本文件中搜索特定整数

如何在文本文件中搜索特定整数

有没有一种简单的方法可以在文本文件(源代码)中搜索特定整数的所有实例。这不应在恰好包含整数作为子字符串的较大数字上触发,但它不能简单地排除此类行,因为它们可能包含这两种情况:

正在搜索“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)都有正则表达式搜索。检查其文档以了解它使用的正则表达式语法。

答案3

我想这并不是一个隐晦的需求。我的常规编程编辑器,普马通过“查找”对话框使用“仅匹配整个单词”选项支持此操作。我确信许多其他编辑也有这个——尽管目前,显然不是 pluma 的祖先,编辑器

enter image description here

相关内容