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

浙公网安备 33010602011771号