免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1464 | 回复: 6
打印 上一主题 下一主题

如何实现这样的替换? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-10 12:42 |只看该作者 |倒序浏览
file1如下:
111111
222222
333333
444444
555555
666666
在该目录下有111111、222222、333333、444444、555555、666666这几个目录。已可能还要多的目录。在每个目录下有一个相同文件名的文件入file2。file2的内容如下。

aabbccccccc
sssssss
sdd
sss
bbS = "1234"
CCCCC
CDDDCCCD
现在要将“1234”替换为目录名。


请大家给看看。谢谢!!!

论坛徽章:
0
2 [报告]
发表于 2006-07-10 13:05 |只看该作者
是要生成6个文件?
还是一个文件6部分。

论坛徽章:
0
3 [报告]
发表于 2006-07-10 13:53 |只看该作者
find . -name "*" -type d  >file1 && cat file1 |sed 's/^..//g'
while read line
do
cd $line
cat file2|sed s/1234/$line/g >file3
mv -f file3 file2
cd ..
done < file1

论坛徽章:
0
4 [报告]
发表于 2006-07-10 13:55 |只看该作者
是在每个目录里面都有一个相同文件名的文件file2,将file2文件里面的1234替换成它的目录名。不知说清楚没有。

论坛徽章:
0
5 [报告]
发表于 2006-07-10 14:07 |只看该作者
find . -type f -name "file2"|while read fn
do
awk '{if($0~/bbS/) {split(FILENAME,FF,"/");printf("bbS = \"%s\"\n",FF[2]);}else  print $0;}' $fn > $fn.tmp
mv $fn.tmp $fn
done

[ 本帖最后由 lovelyarry 于 2006-7-10 14:44 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-07-10 15:02 |只看该作者

  1. for d in `cat file2`; do
  2.         [[ -d $d ]] && {
  3.                 sed -i '/bbs/ s/\(bbs=\).*/\1'$d'/' $d/file2
  4.         }
复制代码

论坛徽章:
0
7 [报告]
发表于 2006-07-11 09:08 |只看该作者

谢谢诶!

结合大家的。已经解决了。谢谢!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP