LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 944|回复: 10

寻求一个SHELL脚本,请各位高手帮忙看一下~

[复制链接]
发表于 2004-8-10 13:10:59 | 显示全部楼层 |阅读模式
请各位高手帮我写个脚本
要求是这样的,
遍例某一目录,凡是文件中包含有"aaa"这一行,如果这一行中还包含"bbb",就将"bbb" 替换成"ccc"  

举个例子,某一目录中包含有N多个文件,凡是文件中包含有“aaa"这一行的,如果这一行还包含有“bbb",就将“bbb"替换成"ccc"

请各位高手帮我写一个,谢谢了
发表于 2004-8-10 13:59:55 | 显示全部楼层
查找替换的例子论坛很多,望善用论坛搜索 :thank
发表于 2004-8-10 14:27:11 | 显示全部楼层

  1. #!/bin/sh

  2. KEY=aaa

  3. for f in `grep -H "$KEY" * | awk 'BEGIN{FS=":"}{print $1}' | uniq`
  4. do
  5.     echo "Processing $f ..."
  6.     sed '/'$KEY'/{s/bbb/ccc/g}' $f >${f}.$$
  7.     mv -f ${f}.$$ $f   # WARNING: This is dangerous!
  8. done

  9. chmod +x $0
复制代码

用法:在希望修改的目录下运行脚本
仅供参考,作者不对该脚本造成的任何结果负责
 楼主| 发表于 2004-8-10 16:22:41 | 显示全部楼层
非常感谢~~太感谢了
 楼主| 发表于 2004-8-10 16:31:07 | 显示全部楼层
太高深了,看了半天,没看懂
发表于 2004-8-10 18:30:24 | 显示全部楼层

  1. for i in $(find -type f -exec awk '/aaa/&&/bbb/{print FILENAME}' {} \;do
  2.     vim -e -s -c ":%s/bbb/ccc/" -c ":wq" $i
  3. done
复制代码
发表于 2004-8-11 08:09:38 | 显示全部楼层
这个好
发表于 2004-8-11 09:48:06 | 显示全部楼层

哈哈

  1. vim -e -s -c ":%s/bbb/ccc/" -c ":wq"
复制代码


这个8错呀,又长见识
 楼主| 发表于 2004-8-11 14:53:14 | 显示全部楼层
大哥,这个源代码,不能执行,提示错误
syntax error near unexpected token `vim'
发表于 2004-8-11 15:36:10 | 显示全部楼层
最初由 天剑 发表
大哥,这个源代码,不能执行,提示错误
syntax error near unexpected token `vim'

监查vim的版本以及man vim
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表