首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印包含特定字符串的两个模式之间的所有行。

打印包含特定字符串的两个模式之间的所有行。
EN

Stack Overflow用户
提问于 2013-06-26 19:45:02
回答 2查看 1.6K关注 0票数 2

我试图打印任何存在于两种不同模式之间的文本,同时也打印这种模式。但只有当文本之间的模式包含特定的字符串使用awk,标志.

我的输入文件:

代码语言:javascript
复制
START 12.5 elephant dasnbjdai adfad
      s = ad cat da 524a das
      da 54e dog dada 455ad7
      da 45d cow 554s7e
END
START fjs 4 rhino das 452 da
      da = cat da gd 
      das_d pig das 
      4524s dda monkey dasdc4
END 
START da dfsdg cow
      bear dac45
      lion bla bla 
      5as4 fox bla fa jsa
END
START dandsk cow  dada
      bla sheep bla
      fsgv turtle fsd
      da dragon da
END
START
      daadas pig fsv45 
      dasd walrus das 52
END

我的输出应该只是显示START...END之间的行,但是包含cat

代码语言:javascript
复制
START 12.5 elephant dasnbjdai adfad
      s = ad **cat** da 524a das
      da 54e dog dada 455ad7
      da 45d cow 554s7e
END
START fjs 4 rhino das 452 da
      da = **cat** da gd 
      das_d pig das 
      4524s dda monkey dasdc4
END 

我怎样才能打印出所有包含龙和海象的线条;

输出

代码语言:javascript
复制
START dandsk cow  dada
      bla sheep bla
      fsgv turtle fsd
      da dragon da
END
START
      daadas pig fsv45 
      dasd walrus das 52
END
EN

回答 2

Stack Overflow用户

发布于 2013-06-26 19:49:54

使用awk的一种方法

代码语言:javascript
复制
awk -v RS="END" '$0~/cat/{print $0 RS}' input 

第二种情况是:

代码语言:javascript
复制
awk -v RS="END" '$0~/walrus|dragon/{print $0 RS}' input 

如果您不希望在这段时间之间出现空行:

代码语言:javascript
复制
awk 'BEGIN{RS="END";ORS=""}$0~/dragon|walrus/{print $0 RS}END{print "\n"}' input
票数 2
EN

Stack Overflow用户

发布于 2013-06-27 02:30:38

使用GNU awk (将RS设置为多个字符):

代码语言:javascript
复制
$ gawk 'BEGIN{RS=ORS="\nEND\n"} /dragon|walrus/' file
START dandsk cow  dada
      bla sheep bla
      fsgv turtle fsd
      da dragon da
END
START
      daadas pig fsv45
      dasd walrus das 52
END

或者:

代码语言:javascript
复制
$ awk -v re="dragon|walrus" 'BEGIN{RS=ORS="\nEND\n"} $0~re' file
START dandsk cow  dada
      bla sheep bla
      fsgv turtle fsd
      da dragon da
END
START
      daadas pig fsv45
      dasd walrus das 52
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17329088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档