如果行没有以#开头,则重复删除令牌

时间:2015-01-21 01:18:36

标签: sed

我想删除文本文件中的所有逗号,除非一行以#

开头

例如:

a, b, c
#a, b, c

应转向:

a b c
#a, b, c

我不介意双重扫描文件,但我想用sed

来做

1 个答案:

答案 0 :(得分:3)

你可以试试下面的sed命令,

$ sed '/^ *#/!s/,//g' file
a b c
#a, b, c

^声称我们刚开始。因此,上面的命令将匹配以零或多个空格开头的行和#符号。然后,以下!使sed反转选择,即,它强制sed在不匹配的行上进行替换。 s/,//g用空字符串替换所有逗号。

通过awk,

$ awk '!/^ *#/{gsub(/,/,"")}1' file
a b c
#a, b, c

!一开始就否定了模式。同样,它只会在开头没有#的行上进行替换。