
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]> 展开
<!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]> 展开
展开全部
#!/bin/bash
FILE=`ls 你文件所在目录`
for i in $FILE
do
sed -i "s/bb/cc/g" 你文件目录/$i
done
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编程了。。不过我水平不够
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个有点正则表达式味道啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好吧,我承认我技术真不咋的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
——————————————————————————————————————————
以上笨方法仅供参考,若有其它好方法,还望分享一下。。。。
——————————————————————————————————————————
假设要处理的文件在/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
——————————————————————————————————————————
以上笨方法仅供参考,若有其它好方法,还望分享一下。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询