在 Bash 中搜索包含文本(非字符串)的文件

在 Bash 中搜索包含文本(非字符串)的文件

如何使用终端查找包含某些特定文本(包含换行符和大量其他字符以及各种引号和反斜杠)的文件?

答案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)可能首先用于减少要搜索的数据量。

相关内容