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

 。

 

posted @ 2023-07-11 23:55  小鲨鱼2018  阅读(274)  评论(0编辑  收藏  举报