【问题标题】:sed command to print lines between two patternssed 命令打印两个模式之间的行
【发布时间】:2018-01-11 22:21:47
【问题描述】:

我正在尝试通过 sed 命令打印两个模式之间的线条。但我想在结果中包含包含 Pattern1 的行并排除 Pattern2。 例如:

/PAT1/
line 1
line 2
line 3
/PAT2/

想要的输出是:

/PAT1/
line 1
line 2
line 3

我已经试过了:

sed -n '/PAT1/,/PAT2/{/PAT2/{d};p}' Input_File

但它排除了这两种模式。

【问题讨论】:

  • 它按我的需要工作。
  • 也许你在{}里面写了/PAT/
  • sed 的哪个版本?它适用于 GNU sed 版本 4.2.1。
  • sed (GNU sed) 4.2.2上按我的需要工作...

标签: linux unix awk sed


【解决方案1】:

你可以用 awk 做到这一点:awk '/patt1/{flag=1}/patt2/{flag=0}flag' input_file

如果 input_file 是:

111 
222 
333 
444 
555

awk '/222/{flag=1}/444/{flag=0}flag' input_file

给予:

222
333

【讨论】:

    最近更新 更多