2016-08-25 44 views
0

我有编辑巨大C++文件,其中我使用sed转换List(something)List<something>为什么我这样做是因为我们的名单已转换为模板的问题。桑达查找和替换cpp文件(.C)

命令我已经写在小的shell文件是这样的

sed -i '/List/s/(/</g' $1 
sed -i '/List/s/)/>/g' $1 

但该命令与清单角括号等相关联的整条生产线,

some_Fun(List(something))转换为some_Fun<List<something>>

我不希望sed更改为some_Fun<>sed应该保留some_Fun()并且只将List()更改为List<>

回答

1

您可以使用此sed

sed 's/\(List\)(\([^)]*\))/\1<\2>/g' file 

(OR)

sed 's/List(\([^)]*\))/List<\1>/g' file 
+0

可能增加,这也将改变'名单()''到列表<>'..如果不是最好使用'\ +'而不是'*' – Sundeep

+0

这改变了funcList()到funcList <>它只能转换List而不是Listkeyword关联所有函数名。 – chandu

+0

谢谢大家,这是我现在的任务,我会努力的。 – chandu