linux - 使用linux命令在文件中的两行之间查找字符串

标签 linux grep

我有一个文件 file.txt,如下所示:

start cal
end cal
start eff
end eff
start cal
error
end cal
start dod
end dod

我想要得到的是最后一组“开始校准”和“结束校准”之间的线。我正在使用 tac 和 grep 来做这件事。但徒劳无功。有什么帮助吗? 下面是我的代码:

tac file.txt | grep -m1 'start cal*end cal'

我做错了什么?对于上面的示例,我需要命令返回“错误”。

最佳答案

Grep 不是完成此任务的好工具。它进行基于行的匹配。可以考虑使用awk。

如果中间只有一行:

tac file|awk '/end cal/{p=1;next}/start cal/{exit}p'

如果可以是多行:

tac file|awk '/end cal/{p=1;next}/start cal/{exit}p'|tac

输出:

error

关于linux - 使用linux命令在文件中的两行之间查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37881115/

相关文章:

linux - 访问未通过 EXPORT_SYMBOL* 导出的 Linux 内核符号

linux - 读取/proc中的虚拟文件内容

tcp - 使用一系列 TCP 端口计算连接数的脚本

linux - 如何在名称包含另一个字符串且在过去 7 天内在 Linux 中创建的文件中搜索字符串?

linux - C、不用函数将十六进制数转十进制数

c - 在汇编函数中获取字符指针

c++ - wxWebConnect 的 Linux 动态链接错误

linux - 用于搜索多个关键字的 Unix 命令

linux - 使用模式文件进行反向 grep 搜索?

regex - 我怎样才能执行这个grep命令