linux 中sed命令删除所有的注释行
001、常规删除方法
[root@PC1 test02]# ls a.txt [root@PC1 test02]# cat a.txt ## 测试数据 ## str1 01 02 03 04 05 06 07 08 ## 09 10 11 12 13 14 15 16 17 18 19 20 ## kkk 21 22 23 24 25 ## kjj 26 27 28 29 30 [root@PC1 test02]# grep -v "^#" a.txt ## 利用grep取反, 并不能完全的删除 01 02 03 04 05 06 07 08 ## 09 10 11 12 13 14 15 16 17 18 19 20 ## kkk 21 22 23 24 25 ## kjj 26 27 28 29 30
002、
[root@PC1 test02]# ls a.txt [root@PC1 test02]# cat a.txt ## str1 01 02 03 04 05 06 07 08 ## 09 10 11 12 13 14 15 16 17 18 19 20 ## kkk 21 22 23 24 25 ## kjj 26 27 28 29 30 [root@PC1 test02]# sed '/#/d' a.txt ## sed删除, 删除了包含#的行 01 02 03 04 05 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
003、正确做法
[root@PC1 test02]# ls a.txt [root@PC1 test02]# cat a.txt ## 测试数据 ## str1 01 02 03 04 05 06 07 08 ## 09 10 11 12 13 14 15 16 17 18 19 20 ## kkk 21 22 23 24 25 ## kjj 26 27 28 29 30 [root@PC1 test02]# sed '/^\s*#/d' a.txt ## 其中^锁定开始,\s表示空白字符,*表示匹配0或者无数次 01 02 03 04 05 06 07 08 ## 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
。