sed提取两种模式之间的文本,其中第二种模式可以是一种

时间:2013-03-04 07:42:08

标签: linux unix sed

我试图在pattern1(fixed)和pattern2之间提取文本(这可以是p2-1 / p2-2)。 你能告诉我如何用一个命令来实现这个目标吗?

文件以start开头,以endclose

结尾
File1:
======
junktest
data
start
stackoverflow
sed
close

File2:
======
data2
start
stackoverflow
end

我可以使用

从File1中提取文本
sed -n "/start/,/close/p"

来自File2 with

sed -n "/start/,/end/p"

我需要一个sed命令才能实现这两个目标.. 类似的东西:

sed -n "/start/, /close or end /p"

4 个答案:

答案 0 :(得分:4)

GNU sed和BSD sed

sed -nE '/start/,/close|end/p' file

答案 1 :(得分:2)

这个awk看起来更好

awk '/start/,/end|close/' file

答案 2 :(得分:0)

sed -n -E "/Word1/,/Word2-1/p" | sed -n -E "/Word1/,/Word2-2/p"

答案 3 :(得分:0)

轻松awk

$ awk '/start/{p=1}p{print}/end|close/{p=0}' file