sed打印特定行的问题

时间:2017-08-01 07:43:56

标签: sed

我有以下数据,其中我有兴趣找到带有START关键字和匹配process2的行,然后只获得进程2的第4行。我开发了下面的sed代码,但是它打印了从process2到的所有行process6。 你能帮我打印第4行吗?

sed -n -e '/START/{p};/process2/{N;N;N;N;p};d' data.txt

START1
process1:  data11345
process2:  data12235
process3:  data13123
process4:  data13123
process5:  data13123
process6:  data13123

START2
process1:  data213345
process2:  data225555
process3:  data235677
process4:  data13123
process5:  data13123
process6:  data13123

START3
process1:  data314332
process2:  data322222
process3:  data335556
process4:  data13123
process5:  data13123
process6:  data13123
process7:  data13123

1 个答案:

答案 0 :(得分:0)

process2之后输出第四行:

sed -n -e '/START/,/^$/{//p;/process2/{n;n;n;n;p}}' file

说明:

START^$之间的块中(下一个空白行或文件末尾):

  • //p:打印与地址范围匹配的行
  • 如果找到/process2/n;n;n;n
  • 将第四行添加到图案空间并打印出来。