如果行不是以 # 开头,则重复删除标记
remove token repeatedly if line does not start with #
我想从我的文本文件中删除所有逗号,除非一行以 #
开头
例如:
a, b, c
#a, b, c
应该转向:
a b c
#a, b, c
我不介意对文件进行两次扫描,但我想用 sed 来做到这一点
你可以试试下面的 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
!
开头否定了模式。同样,它只会对开头没有 #
的行进行替换。
我想从我的文本文件中删除所有逗号,除非一行以 #
开头例如:
a, b, c
#a, b, c
应该转向:
a b c
#a, b, c
我不介意对文件进行两次扫描,但我想用 sed 来做到这一点
你可以试试下面的 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
!
开头否定了模式。同样,它只会对开头没有 #
的行进行替换。