首页 > 解决方案 > 如何使用bash在单词后匹配带有换行符的文本

问题描述

我需要在 bash 中进行单词匹配后匹配文件的结尾。我有这样的文字:

line 1
line 2
line 3
key line
line 5
line 6

我假装在“关键线”之后得到了所有东西,所以我的输出是:

line 5
line 6

我怎样才能使用 bash 做到这一点?我试过 grep -o -P '(?<=key line\n)[\s\S]*'但没用,虽然它在https://regexr.com/中进行了测试

标签: regexgrep

解决方案


grep是基于行的。当您想跨行搜索时,它效果不佳。

sed可以胜任这份工作了。这将d删除从 line1到包含 的所有行key line,只留下后面的行:

$ sed '1,/key line/d' test.txt
line 5
line 6

推荐阅读