基本的grep

时间:2009-04-25 15:43:08

标签: grep

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

grep ABC file.txt

grep ABC1 file.txt

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

grep ABC12 file.txt

grep无法找到相应的行。

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

5 个答案:

答案 0 :(得分:5)

使用类似

的内容
od -x -a < filename

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

注意:od有很多有用的选项可以帮助您。实际上要列出太多。

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

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

echo "ABC123" | grep ABC12

答案 3 :(得分:0)

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

grep -E 'ABC1|ABC2|ABC3'

答案 4 :(得分:0)

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

$ cat file.txt
ABC
ABC1
ABC12
ABC123
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等)的任何行。如果它不包含整个字符串,则不会显示