首页 > 解决方案 > 在不使用正则表达式的情况下使用换行符在文件内容中使用 grep 搜索关键字

问题描述

有没有办法让我执行 grep 命令,例如:

这是关键字查找“主题:这是关键字”

在文件中,这些可能是可能的结果

主题:这是一个\n关键字

主题:这是\n一个关键字

主题: 这是\n 是关键字

我不知道有多少变化。有没有办法在没有正则表达式的情况下使用 grep 来匹配所有这些场景?

否则,更糟糕的情况是,我将不得不将所有内容复制到另一个文件中,将所有新行移走并连接然后 grep 它。

标签: linuxgrep

解决方案


在这里,我使用了另外两个简单的实用程序来格式化文件,以便可以在不使用正则表达式的情况下对其进行 grep。

请注意,在这种情况下,新的临时换行符总是以“主题:..”开头,因此 grep 的输出可能包含该行的其余部分,直到下一个“主题:..”。

示例输入文件:

Subject: This is a
 keyword
Sample text here-
Subject: This is
 a keyword
Another text here
Subject: This
 is a keyword
Ending line!

命令:

cat test.txt | tr -d '\n' | sed 's/Subject: /\n&/g' | grep 'Subject: This is a keyword'

样本输出:

Subject: This is a keywordSample text here-
Subject: This is a keywordAnother text here
Subject: This is a keywordEnding line!

请注意,如果即使在“主题:”一词中也可能出现换行符,则必须编辑该命令。


推荐阅读