有没有更好的方法来执行此命令来查找文件中除特殊字符之外的字符串?
目前我正在做的事情:
strings file.abc | grep -v \= | grep -v \] | grep -v \) | more
我想添加更多特殊字符,这样结果中就只能得到 az 和 AZ。
答案1
如果你只是想排除这些特殊字符,你可以使用正则表达式(例如,聚合酶链反应像这样:
strings file.abc | grep -Pv "[=\])]"
如果你只想显示包含某些特定字符的字符串,可以使用 grep代替字符串。
命令
grep -Poa "[A-Za-z]{4,}" file.abc
显示所有至少有四个字母的单词。
这里:
- 该
-o
开关使 grep 仅显示匹配项(而不是整行)。 - 该
-a
开关强制将二进制文件视为文本文件。 PCRE
[A-Za-z]{4,}
匹配四个或更多连续的字母。四是默认数字字符串根据需要进行调整。
答案2
怎么样
strings file.abc | grep '^[A-Za-z]*$'
?
这样你就只能得到由字母组成的行。
实际上,你可能希望只包含一个或多个序列字母;即包含字母和空格的行。如果这就是你想要的,那么
strings file.abc | grep '^[A-Za-z ]*$'
在 后面有一个空格z
。如果您决定要包含任何其他字符,请将它们放在括号内。(警告:有些字符会很棘手,例如引号字符本身,'
以及右括号,]
。)