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
004、不包括匹配的关键字,grep + 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]# grep "keyword" -A 2 a.txt | grep -v "keyword" ## 输出关键字后两行,不包括关键字 3 4 -- 6 7
005、不包括匹配的关键字,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/,+2{/keyword/b;p}' a.txt ## 输出匹配字符后边的两行 3 4 6 7
006、不包括关键字,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 ## awk实现 (base) [root@pc1 test2]# awk '{if($0 ~ /keyword/) {idx = "yes"; tmp = NR + 2; next}; if(NR <= tmp) {print $0}}' a.txt 3 4 6 7
。
标签:字符,test2,keyword,pc1,sed,base,linux,txt,root From: https://www.cnblogs.com/liujiaxin2018/p/17729065.html