小编Ama*_*nna的帖子

sed/awk - 在跨越多行的模式之间打印文本

我是脚本新手,并且正在尝试学习如何提取两种不同模式之间存在的任何文本.但是,在以下场景中,我仍然无法弄清楚如何在两种模式之间提取文本:

如果我的输入文件读取:

Hi I would like
to print text
between these 
patterns
Run Code Online (Sandbox Code Playgroud)

我的预期输出如下:

I would like
to print text
between these 
Run Code Online (Sandbox Code Playgroud)

即我的第一个搜索模式是"嗨"并跳过这个模式,但打印出匹配模式后面的同一行中存在的所有内容.我的第二个搜索模式是"模式",我想完全避免打印此行或超出任何行那.

我尝试了以下方法:

sed -n '/Hi/,/patterns/p' test.txt 
Run Code Online (Sandbox Code Playgroud)

[输出]

Hi I would like
to print text
between these 
patterns 
Run Code Online (Sandbox Code Playgroud)

接下来,我试过:

`awk ' /'"Hi"'/ {flag=1;next} /'"pattern"'/{flag=0} flag { print }'` test.txt 
Run Code Online (Sandbox Code Playgroud)

[输出]

to print text
between these
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我确定如何实现这一目标吗?提前致谢

bash awk sed

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

awk ×1

bash ×1

sed ×1