我想删除文本文件中的所有逗号,除非一行以#
开头例如:
a, b, c
#a, b, c
应转向:
a b c
#a, b, c
我不介意双重扫描文件,但我想用sed
来做答案 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
!
一开始就否定了模式。同样,它只会在开头没有#
的行上进行替换。