Chinaunix

标题: 查找某个目录下(包括子目录)中的文件,将JSP中的UTF-8的替换成GBK。循环写法。 [打印本页]

作者: wgm993114    时间: 2006-08-11 22:41
标题: 查找某个目录下(包括子目录)中的文件,将JSP中的UTF-8的替换成GBK。循环写法。

  1. #!/bin/bash
  2. wgm = "kissa"
  3. echo $wgm
  4. LIST="$(find . -name "*.jsp")"

  5. for i in "$LIST"; do
  6. fi ="$(ls $i)}"
  7. echo $fi
  8. sed 's/java/perl/g' $i>>$i.bak
  9. done
  10. ~

复制代码

sed 必须重定向,但这样重定向,又报错。
我想先生成BAK,在全部重新命名为.jsp
请大家指导下。
作者: wgm993114    时间: 2006-08-11 22:44
标题: 这里面就有一个如何将变量和一般字符串连接起来的问题了,
$i和.bak,应该如何连接起来啊?
作者: wgm993114    时间: 2006-08-11 22:55
标题: 再比如说,我有相同名字的一些.java文件也要执行此替换应该怎么写。
我想象的写法

  1. #!/bin/bash
  2. wgm = "kissa"
  3. echo $wgm
  4. LIST="$(find . -name "*.jsp")"

  5. for i in "$LIST"; do
  6. foo=${$i%%.*}.java

  7. sed 's/java/perl/g' $foo>>$foo.bak
  8. done

复制代码

这样肯定是不行的,但只是这个想法!
作者: vantien    时间: 2006-08-11 23:23


  1. for fl in `grep -l "UTF-8" *.jsp *.java`; do
  2.    sed -e 's/UTF-8/GBK/g' $fl >> $fl.new
  3.    mv $fl $fl.bak
  4.    mv $fl.new $fl
  5. done

复制代码

[ 本帖最后由 vantien 于 2006-8-11 23:25 编辑 ]
作者: 寂寞烈火    时间: 2006-08-12 01:14
用高点版本的sed吧,他有个-i的开关就可直接修改文件而不需重定向了

  1. /home/lee#sed --version
  2. GNU sed version 4.0.5
复制代码

  1. sed -i '...' urifle
复制代码

或用awk也可

  1. awk '{gsub(/patten/,"string");print>"filename"}' filename
复制代码

ed,vim也可

[ 本帖最后由 寂寞烈火 于 2006-8-12 01:16 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2