linux批量替换文件中某一部分内容中的某些字符? 150

如,有多个文件,我要批量替换这些文件中以下部分内容<!aa[bbtest1/bbtest2/bbtest3]>替换成<!aa[cctest1/cctest2/cctest... 如,有多个文件,我要批量替换这些文件中以下部分内容
<!aa[bbtest1/bbtest2/bbtest3]>替换成<!aa[cctest1/cctest2/cctest3]>
<!aa[bbfirst1/bbfirst2/bbfirst3]>替换成<!aa[ccfirst1/ccfirstt2/ccfirst3]>

<!aa[bbsecond1/bbsecond2/bbsecond3]>替换成<!aa[ccsecond1/ccsecond2/second3]>

<!aa[bbfour1/bbfour2/bbfourt3/bbfourt4]>替换成<!aa[ccfour1/ccfour2/ccfourt3/ccfourt4]>

<!aa[bbfive1/bbfive2]>替换成<!aa[ccfive1/ccfive2]>

把<!aa[这里面的bb替换成cc]>

求高手解答
数据会是这样的情况:

这里的bb不用替换<!aa[bbfive1/bbfive2]>替换成——>这里的bb不用替换<!aa[ccfive1/ccfive2]>

这里的bb不用替换<!aa[bbfour1/bbfour2/bbfourt3/bbfourt4]>替换成——>这里的bb不用替换<!aa[ccfour1/ccfour2/ccfourt3/ccfourt4]>
展开
 我来答
百度网友6c0f575
2013-04-25 · TA获得超过520个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:506万
展开全部
#!/bin/bash
FILE=`ls 你文件所在目录`
for i in $FILE
do
sed -i "s/bb/cc/g" 你文件目录/$i
done
追问
你这个是把所有的bb替换成cc,我只要局部的替换,,之外的bb不用替换

也就是数据会是这种情况:
这里的bb不用替换替换成——>这里的bb不用替换
追答
好吧 我强迫症
搞了一个
#!/bin/bash
awk -F "[" '{print$2}' 你的文件| awk -F "]" '{print$1}' > tmp1
awk -F "[" '{print$2}' 你的文件| awk -F "]" '{print$1}' | sed 's/bb/cc/g' >tmp2
paste tmp1 tmp2 > tmp5
while read C D
do
sed -i 's%'"$C"'%'"$D"'%g' 你的文件
done<tmp5

报错不用管他
这个其实也不严谨
如果你【】外面 有和【】里面内容一样的话就不行

真正的办法应该是AWK编程了。。不过我水平不够
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
充满智慧的网友甲
2013-04-26 · TA获得超过123个赞
知道小有建树答主
回答量:528
采纳率:0%
帮助的人:154万
展开全部
这个有点正则表达式味道啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1357508130
2013-04-25 · TA获得超过245个赞
知道小有建树答主
回答量:94
采纳率:100%
帮助的人:85万
展开全部
好吧,我承认我技术真不咋的T_T,不过somebody要是乐于尝试的话:),倒是有下面这样一个笨方法:
——————————————————————————————————————————
假设要处理的文件在/tmp/目录下,代码如下:(已测试可行)

+++++++其中有许多反斜杠“\",是用于特殊符号的”转义“++++++++++

#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH

filenames=`ls /tmp/`
for name in $filenames
do
file=/tmp/$name

sed -i 's/<!aa\[bbtest1\/bbtest2\/bbtest3\]>/<!aa\[cctest1\/cctest2\/cctest3\]>/g' $file

sed -i 's/<!aa\[bbfirst1\/bbfirst2\/bbfirst3\]>/<!aa\[ccfirst1\/ccfirst2\/ccfirst3\]>/g' $file

sed -i 's/<!aa\[bbsecond1\/bbsecond2\/bbsecond3\]>/<!aa\[ccsecond1\/ccsecond2\/ccsecond3\]>/g' $file

sed -i 's/<!aa\[bbfour1\/bbfour2\/bbfour3\/bbfour4\]>/<!aa\[ccfour1\/ccfour2\/ccfour3\/ccfour4\]>/g' $file

sed -i 's/<!aa\[bbfive1\/bbfive2\]>/<!aa\[ccfive1\/ccfive2\]>/g' $file
done
——————————————————————————————————————————
以上笨方法仅供参考,若有其它好方法,还望分享一下。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式