【发布时间】:2023-02-16 22:53:28
【问题描述】:
我需要打印在模式匹配之前从一行开始到下一个空白行的文本块。我设法用 awk/sed 做到了,但是从 PATTERN2(作为变量 $ID 传递)出现的行开始,而不是前一个。我的输入文件:
2022/12/28 02:06:29 [Time]
Processing id: PATTERN1
multiple lines follow
2023/01/14 04:06:29 [Time]
Processing id: PATTERN2
multiple lines follow
2023/02/15 08:07:29 [Time]
Processing id: PATTERN3
multiple lines follow
2023/02/16 14:06:29 [Time]
Processing id: PATTERN2
multiple lines follow
....
使用 sed:
sed -n "/Processing id: $ID/,/^$/p" inputfile
用 awk:
awk -v myid="$ID" '$0 ~ "Processing id: "myid,/^$/ {print}' inputfile
期望的输出:
2023/01/14 04:06:29 [Time]
Processing id: PATTERN2
multiple lines follow
2023/02/16 14:06:29 [Time]
Processing id: PATTERN2
multiple lines follow
【问题讨论】: