linux - 匹配模式后打印段落

标签 linux bash awk sed pattern-matching

我只想在匹配后打印两个空行之间的行。我的数据如下所示:

List A
Item 1
Item 2
Item 3

Item 4
Item 5

List B
Item 1
Item 2
Item 3

因此,我正在尝试使用 sed 或 awk 或 grep 命令来匹配列表 A 并获取

的输出
Item 4
Item 5

到目前为止,我已经尝试过:

sed '/^$/,/^$/!d'

sed '/list\sA.*^$/,/^$/!d'

在这种情况下,我尝试打印范围并将第一个模式定义为字符串和包含的所有内容,直到空行。

我还尝试了其他代码:

awk -v RS='' -v ORS='\n\n'

但是,这只会给我包含模式的段落,我正在尝试获取之后的段落。

最后,我认为它是使用 sed -n 并将 { } 与标签一起使用的东西,但我还不够先进,无法将它们放在一起。如果您能指出正确的方向,我将不胜感激。

最佳答案

当你匹配一个模式时,用 getline 获取下一条记录:

$ awk -v RS='' '/List A/ {getline; print}' file
Item 4
Item 5

关于linux - 匹配模式后打印段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937114/

相关文章:

linux - 循环内打印语句

bash - 匹配两个文件第一列中的值并将匹配行加入新文件中

linux - 在 NodeJS 进程中创建 bash 包装器

linux - telnet 自动化脚本有时会失败

linux - rsync 排除/包含奇怪的行为

bash - 在 Unix 上隐藏命令行参数的 secret

linux - Debian:gpg:错误读取 '[stdin]':一般错误

linux - 测试文件内容

bash 不按顺序运行命令

linux - 在 unix 中查找和删除