|
发表于 2007-8-21 10:35:06
|
显示全部楼层
#/bin/bash
#author : cppgp
#function: replace string
#time : 2007 08 17 08:45
if [ ! -n "$3" ]
then
echo
echo
echo -e " Usage:"
echo -e "\t`basename $0` need three parameters at least"
echo -e "\tand the parameters like as : source dest replace.txt"
echo -e "\tand wildcard can be used in filename , like as : source dest *.txt!"
echo
echo
exit 127
fi
echo
echo "source =$1"
echo "dest =$2"
echo
echo "replace begin......."
echo
echo
#protect-self
scriptself=${0##*/}
index=1
for arg in "$@"
do
{
if [ "$index" -gt 2 -a $arg != $scriptself ]
then
echo "now replace file $arg ......"
sed "s/$1/$2/" $arg -i.bak
fi
let "index+=1"
}
done
echo
echo
echo "replace finish ....."
echo
exit 0
#############################
#以下是使用说明
#############################
替换脚本使用说明
本文档假设该脚本已经以 replace.sh 保存
1.使用说名:
1).脚本使用命令行参数来实现替换及待替换文件
2).参数表如下:
replace.sh 源串 目的串 文件1 文件2 ... 文件n
其中文件可以有任意多个,文件名中可以有通配符
3).执行任何以次操作之后,都会将原文件备份成 filename.bak
2.使用案例
1).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
想替换 index.html 中的 211.157.99.197 成 211.157.104.136
那么替换命令如下:
./replace.sh 211.157.99.197 211.157.104.136 index.html
同时会替换对应字符串且备份 index.html 为 index.html.bak
2).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
想替换 index.html , 001.html , 002.html 中的 211.157.99.197 成 211.157.104.136
那么替换命令如下:
./replace.sh 211.157.99.197 211.157.104.136 index.html 001.html
同时会替换对应字符串且备份 index.html 为 index.html.bak
同时会替换对应字符串且备份 001.html 为 001.html.bak
3).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
想替换所有文件名以.html结尾的文件中的 211.157.99.197 成 211.157.104.136
那么替换命令如下:
./replace.sh 211.157.99.197 211.157.104.136 *.html
同时会替换对应字符串且备份 index.html 为 index.html.bak
同时会替换对应字符串且备份 001.html 为 001.html.bak
同时会替换对应字符串且备份 002.html 为 002.html.bak
4).假设在当前文件夹下有 index.html,001.html,002.html,003.txt,004.h,005.cpp 六个文件
想替换所有文件中的 211.157.99.197 成 211.157.104.136
那么替换命令如下:
./replace.sh 211.157.99.197 211.157.104.136 *
同时会替换对应字符串且备份 index.html 为 index.html.bak
同时会替换对应字符串且备份 001.html 为 001.html.bak
同时会替换对应字符串且备份 002.html 为 002.html.bak
同时会替换对应字符串且备份 003.txt 为 003.txt.bak
同时会替换对应字符串且备份 004.h 为 004.h.bak
同时会替换对应字符串且备份 005.cpp 为 005.cpp.bak
3.附注:
欢迎对本脚本提出批评建议;任何时间可以用email或者TQ联系我!
TQ : 8069002
Email : cppgp@163.com
cppgp
2007-08-17 |
|