linux 中sed命令输出匹配字符的下一行或者若干行

发布时间 2023-09-25 22:53:39作者: 小鲨鱼2018

 

001、grep实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt          ## 测试数据
1
2
keyword
3
4
5
keyword
6
7
8
(base) [root@pc1 test2]# grep "keyword" -A 2 a.txt    ##  输出匹配字符后面的两行
keyword
3
4
--
keyword
6
7

 

002、sed实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt       ## 测试数据
1
2
keyword
3
4
5
keyword
6
7
8
(base) [root@pc1 test2]# sed -n '/keyword/,+2p' a.txt     ## 输出匹配字符后面的两行
keyword
3
4
keyword
6
7

 

003、awk实现

(base) [root@pc1 test2]# ls
a.txt
(base) [root@pc1 test2]# cat a.txt       ## 测试数据
1
2
keyword
3
4
5
keyword
6
7
8                                 ## 输出匹配字符及其后的两行
(base) [root@pc1 test2]# awk '{if($0 ~ /keyword/) {idx = "yes"; tmp=NR}; if(NR <= tmp + 2 && idx == "yes") {print $0}}' a.txt
keyword
3
4
keyword
6
7