linux - 在不使用正则表达式的情况下使用换行符在文件内容中使用 grep 搜索关键字
问题描述
有没有办法让我执行 grep 命令,例如:
这是关键字查找“主题:这是关键字”
在文件中,这些可能是可能的结果
主题:这是一个\n关键字
主题:这是\n一个关键字
主题: 这是\n 是关键字
我不知道有多少变化。有没有办法在没有正则表达式的情况下使用 grep 来匹配所有这些场景?
否则,更糟糕的情况是,我将不得不将所有内容复制到另一个文件中,将所有新行移走并连接然后 grep 它。
解决方案
在这里,我使用了另外两个简单的实用程序来格式化文件,以便可以在不使用正则表达式的情况下对其进行 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!
请注意,如果即使在“主题:”一词中也可能出现换行符,则必须编辑该命令。
推荐阅读
- mysql - 我需要一个查询来做一些特定的事情
- jquery - 我正在尝试使用 grep 但无法使其正常工作
- node.js - 在 Angular 项目中安装 agora 时出错
- sparql - 使用 SPARQLWrapper 获取 HTTP 406 查询 GraphDB
- android - 如何通过 Flutter 使用 Dropbox 进行身份验证、创建、读取和更新文件夹
- php - 调节从表中选择
- javascript - d3.js 示例代码中的“图表”如何工作?
- android - 使用颤振以不同方向点击屏幕时获得相同的 (x,y)
- c++ - unordered_map 无法在工作 C++ 中初始化?
- fetch - JS FetchAPI Get Request 添加原始正文数据