请问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开头的目录。
展开
 我来答
seesea2517
2013-06-14 · TA获得超过1480个赞
知道小有建树答主
回答量:512
采纳率:100%
帮助的人:555万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式