我有一个文件 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/