linux 中 sed匹配特定字符并输出其后的若干行

 

001、

root@DESKTOP-1N42TVH:/home/test2# ls
a.txt
root@DESKTOP-1N42TVH:/home/test2# cat a.txt       ## 测试数据
01 1
02 2
AA 3
03 4
04 5
05 6
BB 7
06 8
07 9
AA 10
08 11
CC 12
09 13
77 14
33 15
AA 16
33 17
78 18
23 19
97 20
root@DESKTOP-1N42TVH:/home/test2# sed -n '/AA/p' a.txt    ## 匹配包含有AA的行
AA 3
AA 10
AA 16

 

002、匹配包含AA的行及其后的2行、1行

root@DESKTOP-1N42TVH:/home/test2# ls
a.txt
root@DESKTOP-1N42TVH:/home/test2# cat a.txt
01 1
02 2
AA 3
03 4
04 5
05 6
BB 7
06 8
07 9
AA 10
08 11
CC 12
09 13
77 14
33 15
AA 16
33 17
78 18
23 19
97 20
root@DESKTOP-1N42TVH:/home/test2# sed -n '/AA/,+2p' a.txt   ## 匹配包含AA的行及其后的两行
AA 3
03 4
04 5
AA 10
08 11
CC 12
AA 16
33 17
78 18
root@DESKTOP-1N42TVH:/home/test2# sed -n '/AA/,+1p' a.txt   ## 匹配包含AA的行及其后的1行
AA 3
03 4
AA 10
08 11
AA 16
33 17

 

003、匹配包含AA的行及其后两行, 同时提取包含BB的行及其后的一行

root@DESKTOP-1N42TVH:/home/test2# ls
a.txt
root@DESKTOP-1N42TVH:/home/test2# cat a.txt
01 1
02 2
AA 3
03 4
04 5
05 6
BB 7
06 8
07 9
AA 10
08 11
CC 12
09 13
77 14
33 15
AA 16
33 17
78 18
23 19
97 20
root@DESKTOP-1N42TVH:/home/test2# sed -n '/AA/,+2p; /BB/,+1p' a.txt ## 同时提取包含AA的行及其后2行,BB行及其后1行
AA 3
03 4
04 5
BB 7
06 8
AA 10
08 11
CC 12
AA 16
33 17
78 18

 

004、提取匹配AA的行及其后的6行

root@DESKTOP-1N42TVH:/home/test2# ls
a.txt
root@DESKTOP-1N42TVH:/home/test2# cat a.txt
01 1
02 2
AA 3
03 4
04 5
05 6
BB 7
06 8
07 9
AA 10
08 11
CC 12
09 13
77 14
33 15
AA 16
33 17
78 18
23 19
97 20
root@DESKTOP-1N42TVH:/home/test2# sed -n '/AA/,+6p' a.txt  ## 匹配AA及其后的6行,匹配原则是依次匹配,最后一个AA在上一次匹配中被选中,不再匹配其后的6行
AA 3
03 4
04 5
05 6
BB 7
06 8
07 9
AA 10
08 11
CC 12
09 13
77 14
33 15
AA 16

 

005、

root@DESKTOP-1N42TVH:/home/test2# ls
a.txt
root@DESKTOP-1N42TVH:/home/test2# cat a.txt
01 1
02 2
AA 3
03 4
AA 5
05 6
BB 7
06 8
07 9
AA 10
08 11
AA 12
09 13
77 14
33 15
AA 16
33 17
78 18
23 19
97 20
root@DESKTOP-1N42TVH:/home/test2# sed -n '/AA/,+3p' a.txt  ## 匹配AA的行及其后的3行,AA被选择后,不再匹配AA及其后的3行
AA 3
03 4
AA 5
05 6
AA 10
08 11
AA 12
09 13
AA 16
33 17
78 18
23 19

 

posted @ 2022-07-17 21:00  小鲨鱼2018  阅读(2239)  评论(0)    收藏  举报