[问题] sed 取代问题

楼主: asdrt (安静)   2015-07-01 15:48:09
想请问的是目前因为资料搬移的关系
所以档案的相对路径有所变更
而这些路径都是写在 a.xml 里面
然后每个资料夹里面都有一个自己的 a.xml (名称一样)
本来用 notepad++ 一个一个更改
后来想到可以用 sed 来做替换
但是因为 路径本身包含了 /
像是我想要把
sed -i 's/kap/alda/resouce/kbp/aldw/reource/2/g' a.xml
把绿色的地方替换成黄色的 这样要怎么去改写
还有就是可以一次把这资料夹里面的各个子资料夹中的 a.xml 内容做一次性替换吗?
感谢
作者: OSDBNetwork (路人甲)   2015-07-01 15:54:00
s:kap/alda/resouce:kbp/aldw/reource/2:g
楼主: asdrt (安静)   2015-07-01 15:58:00
用: OK!
作者: obarisk (OSWALT)   2015-07-01 16:27:00
\
作者: kerwinhui (kezza)   2015-07-01 16:33:00
s后面可以随意用separator,1楼用:,我个人比较喜欢用@
楼主: asdrt (安静)   2015-07-01 18:05:00
所以我前面加上 find . a.xml | sed ......... 去替换应该就可以了吧?还是先用 awk 列出档案列表再来修改?
作者: cherubx (DanzYam)   2015-07-01 22:39:00
用xargs -i sed -i 's///g' {}
作者: kerwinhui (kezza)   2015-07-02 00:53:00
万一你的路径名有空白或其他特殊字符,请用 -print0 和| xargs -0
作者: kenduest (小州)   2015-07-02 01:32:00
find 语法完全不对,应该是 find . -name a.xml精准一点就.. find . -type f -name a.xml搜寻路径常常有特殊字符与空白等,所以一般都用find . -type f -name "xxx" -print 0 | xargs -0 .....另外有时候 xargs 收到的结果太多可能一次带入给要执行的命令引发引数太常问题,担心这个可以搭配 -nfind ...... -print0 | xargs -0 -n 200 sed ....-n 后面数字就看情况调整
楼主: asdrt (安静)   2015-07-02 13:32:00
感谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com