2015-01-21 55 views
0

我想从我的文本文件中删除所有逗号,除非符合#取出令牌时重复行不以#

例如开始启动:

a, b, c 
#a, b, c 

应该转向:

a b c 
#a, b, c 

我不介意双扫描该文件,但我想这样做,与sed的

回答

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 

!在开始否定彭定康。同样,它只会在一开始就没有#的线路上进行更换。

+0

你能解释一下吗 – Ezra 2015-01-21 01:23:10

+0

肯定只是一分钟.. – 2015-01-21 01:23:59

相关问题