如果一行以"#"开头,则要替换第一次出现的"("以及最后一次出现")"以下是空格:
示例输入:cat world.txt
MAP MT.POS(AUS) , SOUTH
#TARGET(MT.POS(USA) , NORTH)
MAP MT.POS(CAN) , NORTH
我正在尝试使用sed,如下所示
cat world.txt | sed -e '/^#/s/\(.*\))/\1 /; /^#/s/\(.*\)(/\1/'
以下是我的期望。
MAP MT.POS(AUS) , SOUTH
#TARGET MT.POS(USA) , NORTH
MAP MT.POS(CAN) , NORTH
提前致谢。
答案 0 :(得分:1)
您可以使用以下sed
命令:
sed '/^#/s/(\(.*\))/\1/' file
/^#/
是一个地址,匹配以#
开头的行。这些行受以下s
(替换)命令的约束。它搜索行中的第一个和最后一个括号,并用它们之间的文本替换它们。
请注意.*
匹配贪婪。这意味着它将消耗尽可能多的字符(包括括号),直到在行中找到最后一个右括号。