当前位置: 技术问答>linux和unix
批量文本替换
来源: 互联网 发布时间:2016-04-08
本文导语: 在我的用户目录下面有很多统一名字的文件Root,里面有一段文本需要全部替换 我想写一个shell脚本来实现,该怎么做呢? 能不能给一段示例代码? 我是在hp-unix下的,我看到很多帖子有用sed -i 's/old/new/g' file_name来替换 ...
在我的用户目录下面有很多统一名字的文件Root,里面有一段文本需要全部替换
我想写一个shell脚本来实现,该怎么做呢?
能不能给一段示例代码?
我是在hp-unix下的,我看到很多帖子有用sed -i 's/old/new/g' file_name来替换
但是hp-unix下sed命令没有-i选项。
我想写一个shell脚本来实现,该怎么做呢?
能不能给一段示例代码?
我是在hp-unix下的,我看到很多帖子有用sed -i 's/old/new/g' file_name来替换
但是hp-unix下sed命令没有-i选项。
|
我写过一个脚本,你试试。用法是"mreplace sed表达式 要替换的文件通配符"
if [ $# -lt 2 ]; then
echo "Usage: mreplace sed_expression files..."
exit
fi
sed_exp=$1
shift
for afile in $@
do
echo replace text in file $afile - $sed_exp
sed $sed_exp $afile > $afile.replace
mv $afile $afile.bak
mv $afile.replace $afile
done
或shell函数
mreplace()
{
if [ $# -lt 2 ]; then
echo "Usage: mreplace sed_expression """
echo "Note: wildcard of files to be replaced must be enclosed by "", e.g. "*cpp""
return 0
fi
for afile in $2
do
echo replace text in file $afile - $1
sed $1 $afile > $afile.replace
mv $afile $afile.bak
mv $afile.replace $afile
done
}
if [ $# -lt 2 ]; then
echo "Usage: mreplace sed_expression files..."
exit
fi
sed_exp=$1
shift
for afile in $@
do
echo replace text in file $afile - $sed_exp
sed $sed_exp $afile > $afile.replace
mv $afile $afile.bak
mv $afile.replace $afile
done
或shell函数
mreplace()
{
if [ $# -lt 2 ]; then
echo "Usage: mreplace sed_expression """
echo "Note: wildcard of files to be replaced must be enclosed by "", e.g. "*cpp""
return 0
fi
for afile in $2
do
echo replace text in file $afile - $1
sed $1 $afile > $afile.replace
mv $afile $afile.bak
mv $afile.replace $afile
done
}
|
Linux下可以使用sed -i 直接修改源文件
HP-UX下sed 没有-i选项,笨点的办法就是先重定向到一个临时文件,再改文件名字
如:将hello.txt中hello改为hi
hello.txt内容为:
hello world
$sed 's/hello/hi/g' hello.txt > hello_temp.txt
$mv hello_temp.txt temp.txt
对于多个文件,就再加个循环吧
HP-UX下sed 没有-i选项,笨点的办法就是先重定向到一个临时文件,再改文件名字
如:将hello.txt中hello改为hi
hello.txt内容为:
hello world
$sed 's/hello/hi/g' hello.txt > hello_temp.txt
$mv hello_temp.txt temp.txt
对于多个文件,就再加个循环吧