如何使用终端查找包含某些特定文本(包含换行符和大量其他字符以及各种引号和反斜杠)的文件?
答案1
grep
在某种程度上是基于行的,因此跨行匹配可能会有问题。如果您有足够的内存,可以使用以下方法匹配整个文件perl
:
$ (echo fish; echo cat; echo dog; echo frog) \
| perl -0777 -nE 'say $1 if m/(cat.dog)/s'
“各种引号和反斜杠”位可能主要是避免 shell 插值规则,例如通过'\''
类型技巧或查看ascii(7)
,然后在 perl 中使用适当的\047
或\x52
或任何必要的。缺少加载文件的内存,strings(1)
可能首先用于减少要搜索的数据量。