【发布时间】:2023-10-30 21:03:01
【问题描述】:
仅当模式中间的文本匹配时,如何使用 awk 或 sed 在模式(相同模式)之间打印 例如假设文件包含
# Wed 10/12/2015
field1=a
field2=b
field3=c
field4=d
# Wed 10/12/2015
field1=e
field2=f
field3=g
field4=h
# Wed 10/12/2015
field1=i
field2=j
field3=k
field4=l
我希望打印两个 '#' 之间的块,其中 field3=g 我写的下面的脚本不起作用
awk '$0 ~ /^#/{
start_flag=1;
}
$0 ~ /g$/{
mid_flag=1;
}
start_flag {
n=NR;
lines[NR];
}
$0 ~ /^#/
{
if (start_flag && mid_flag)
{
for (i=n; i<NR; i++)
print lines[i];
}
start_flag=0;
mid_flag=0;
delete lines
}' <file_name>
预期的 o/p 是
field1=e
field2=f
field3=g
field4=h
【问题讨论】: