我一直在使用 ack、sed、grep 进行测试,尝试搜索目录中的文件以查找特定字符串。我正在查看数据库文件以检查密码是否以明文形式列出。到目前为止,我已经能够使用此命令:grep -Ri "search_string" /path_to_Folder
但是,这仅输出包含该字符串的文件。我想更进一步,打印出字符串周围的行,这样我就不必进入并搜索每个文件。
我希望这是有道理的。太感谢了。
答案1
如果我理解正确的话,那么:
打印出字符串周围的线
您可以使用 grep 的-C
(context) 选项,如下所示:
grep -aRi -C 1 "search_string" /path_to_Folder
它将为每个匹配打印三行:匹配之前的行、匹配的行和匹配之后的行。
由于数据库文件是二进制的,我们还需要 grep 的 -a 标志,以便它将文件视为文本。
示例运行:
$ grep -aRi jeff *
a/b/c/i:jeff
a/b/i:jeff
a/i:jeff
i:jeff
与
$ grep -aRi -C1 jeff *
a/b/c/i-hi
a/b/c/i:jeff
a/b/c/i-bye
--
a/b/i-hi
a/b/i:jeff
a/b/i-bye
--
a/i-hi
a/i:jeff
a/i-bye
--
i-hi
i:jeff
i-bye