请问sed全匹配替换时如何排除注释行。 需要批量替换多目录底下的多文件内容,但是不需要更改注释行。
需要对多目录底下的多个xml文件内容进行单词替换,使用sed's/\<old\>/new/g'file可以进行全匹配替换。但是其中有很多注释行内容也被更改了。希望能够不要...
需要对多目录底下的多个xml文件内容进行单词替换,使用sed 's/\<old\>/new/g' file可以 进行全匹配替换。但是其中有很多注释行内容也被更改了。希望能够不要更改注释行。注释行以//开头。谢谢!
不好意思,注释行是以 <!-- 开头的。
此外,还可以指定特定的目录吗? 比如,只替换目录FABC-01, FABC-2X, FABC-C3,...FABC-N等以FABC开头的目录下的所有文件,忽略其他非FABC开头的目录。 展开
不好意思,注释行是以 <!-- 开头的。
此外,还可以指定特定的目录吗? 比如,只替换目录FABC-01, FABC-2X, FABC-C3,...FABC-N等以FABC开头的目录下的所有文件,忽略其他非FABC开头的目录。 展开
1个回答
展开全部
sed '/\/\//b; s/\<old\>/new/g' file
或
sed '/\/\//!s/\<old\>/new/g' file
追问
不好意思,注释行是以 <!-- 开头的。
此外,还可以指定特定的目录吗? 比如,只替换目录FABC-01, FABC-2X, FABC-C3,...FABC-N等以FABC开头的目录下的所有文件,忽略其他非FABC开头的目录。
追答
注释开头不一样,就改一下标记信息就行了:
sed '/<!--/b; s/\<old\>/new/g' file
或
sed '/<!--/!s/\<old\>/new/g' file
如果是多行注释的话会很复杂,这里没有做考虑。
需要指定目录什么的,这个得另外指定了,sed 只负责查找替换嘛,目录什么的要靠 shell 的功能来处理,比如你目录都在一起的话,可以考虑这样试试:
sed '/<!--/b; s/\<old\>/new/g' FABC*/file
或
sed '/<!--/!s/\<old\>/new/g' FABC*/file
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询