加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何组合多个grep命令?

发布时间:2020-12-14 01:26:53 所属栏目:Linux 来源:网络整理
导读:我有一个很长的.txt文件(LONG.txt).在那个txt文件中,我想搜索3种类型的模式,然后我想将grep结果捕获到一个新的txt文件(SHORT.txt)中. 模式: AAAAA BBBBB CCCCC 注意: 当找到模式AAAAA或BBBBB时,我想只打印包含AAAAA或BBBBB的那一行. 当找到模式CCCCC时,我
我有一个很长的.txt文件(LONG.txt).在那个txt文件中,我想搜索3种类型的模式,然后我想将grep结果捕获到一个新的txt文件(SHORT.txt)中.

模式:

> AAAAA
> BBBBB
> CCCCC

注意:

当找到模式AAAAA或BBBBB时,我想只打印包含AAAAA或BBBBB的那一行.

当找到模式CCCCC时,我想打印包含CCCCC下一行的那一行.

例:

LONG.txt:

bla bla 
bla bla 
bla bla 
something something AAAAA something something
bla bla 
bla bla 
something something CCCCC something something
bla bla 
bla bla 
bla bla 
bla bla 
bla bla 
bla bla 
something something BBBBB something something
bla bla 
bla bla 
bla bla 
something something AAAAA something something
bla bla 
something something AAAAA something something
bla bla 
something something BBBBB something something
bla bla 
bla bla 
bla bla 
something something CCCCC something something
bla bla
bla bla
bla bla

输出应该是:

something something AAAAA something something
something something CCCCC something something
bla bla 
something something BBBBB something something
something something AAAAA something something
something something AAAAA something something
something something BBBBB something something
something something CCCCC something something
bla bla

我尝试的是:

grep -B0 "AAAAA" LONG.txt > SHORT.txt
grep -B0 "BBBBB" LONG.txt > SHORT.txt
grep -B1 "CCCCC" LONG.txt > SHORT.txt

但这并没有给我想要的输出.

解决方法

awk’/ AAA | BBB | CCC / {print; if($0~ / CCC /){getline;打印;}}’

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读