2

我有一个大文件,其中每一行都包含一个子字符串,例如 ABC123。如果我执行

grep ABC file.txt

或者

grep ABC1 file.txt

我按预期恢复了这些行,但是如果我执行

grep ABC12 file.txt

grep 找不到相应的行。

这似乎是非常微不足道的功能,但我不是 grep 的重度用户,所以也许我错过了一些问题。

4

5 回答 5

5

使用类似的东西

od -x -a < filename

以十六进制转储文件内容。这将立即向您显示文件中的内容是否符合您的期望。我怀疑不是:-)

注意:od这里有很多有用的选项可以帮助您。实在太多了,就不一一列举了。

于 2009-04-25T16:03:58.333 回答
3

您的文件是否有可能包含一些隐藏字符,例如 0x00 ?

于 2009-04-25T15:50:31.517 回答
0

这没有意义。您确定该文件包含“ABC123”吗?

您可以通过在 shell 中运行以下命令来验证这一点

echo "ABC123" | grep ABC12
于 2009-04-25T15:47:11.323 回答
0

如果这些行包含 ABC123,那么“grep ABC12”应该得到它们。您的意思是要匹配几个不同的字符串,例如 ABC1、ABC2 和 ABC3?在这种情况下,你可以试试这个:

grep -E 'ABC1|ABC2|ABC3'
于 2009-04-25T15:48:59.430 回答
0

我不确定问题是什么..grep完全可以正常工作..例如,我的测试文件的内容:

$ cat file.txt
ABC
ABC1
ABC12
ABC123

..and grep'ing for ABC, ABC1, ABC12, ABC123:

$ grep ABC file.txt 
ABC
ABC1
ABC12
ABC123
$ grep ABC1 file.txt 
ABC1
ABC12
ABC123
$ grep ABC12 file.txt 
ABC12
ABC123
$ grep ABC123 file.txt 
ABC123

grep基本上是一个过滤器,将显示包含第一个参数(ABC 或 ABC1 等)的任何行。如果不包含整个字符串,则不会显示

于 2009-04-25T15:50:16.947 回答