我有一个大文件,其中每行包含一个子字符串,如ABC123。如果我执行
grep ABC file.txt
或
grep ABC1 file.txt
我按预期将这些行恢复,但是如果我执行
grep ABC12 file.txt
grep无法找到相应的行。
这似乎是非常简单的功能,但我不是grep的重度用户,所以也许我错过了一些问题。
答案 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等)的任何行。如果它不包含整个字符串,则不会显示