我有一个大文件,其中每一行都包含一个子字符串,例如 ABC123。如果我执行
grep ABC file.txt
或者
grep ABC1 file.txt
我按预期恢复了这些行,但是如果我执行
grep ABC12 file.txt
grep 找不到相应的行。
这似乎是非常微不足道的功能,但我不是 grep 的重度用户,所以也许我错过了一些问题。
我有一个大文件,其中每一行都包含一个子字符串,例如 ABC123。如果我执行
grep ABC file.txt
或者
grep ABC1 file.txt
我按预期恢复了这些行,但是如果我执行
grep ABC12 file.txt
grep 找不到相应的行。
这似乎是非常微不足道的功能,但我不是 grep 的重度用户,所以也许我错过了一些问题。
使用类似的东西
od -x -a < filename
以十六进制转储文件内容。这将立即向您显示文件中的内容是否符合您的期望。我怀疑不是:-)
注意:od
这里有很多有用的选项可以帮助您。实在太多了,就不一一列举了。
您的文件是否有可能包含一些隐藏字符,例如 0x00 ?
这没有意义。您确定该文件包含“ABC123”吗?
您可以通过在 shell 中运行以下命令来验证这一点
echo "ABC123" | grep ABC12
如果这些行包含 ABC123,那么“grep ABC12”应该得到它们。您的意思是要匹配几个不同的字符串,例如 ABC1、ABC2 和 ABC3?在这种情况下,你可以试试这个:
grep -E 'ABC1|ABC2|ABC3'
我不确定问题是什么..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 等)的任何行。如果不包含整个字符串,则不会显示