您的位置:首页 > 运维架构 > Shell

shell 批量修改指定的文件。

2008-12-09 12:17 375 查看
shell 批量修改指定的文件。
Batch_modify_file_list.sh
#!/bin/sh

if [ -f modify_temp_file_list ];then #判断文件是否存
在,如果存在就删除掉。
rm modify_temp_file_list
fi

for i in `awk '{print $1}' <modify_file_list`
do

echo $i >modify_temp_value #Create Temp value is use save value
filename=`awk -F'|' '{print $1}' <modify_temp_value` #取出第一个值,从modify_temp_value文件里。
oldip=`awk -F'|' '{print $2}' <modify_temp_value` #取出第二个值。
newip=`awk -F'|' '{print $3}' <modify_temp_value` #取出第三个值。
echo $filename.bak >> modify_temp_file_list #将改完名后的文件存放到一个临时文件里面。

echo "=========开始修改: $filename 文件=`date '+%Y-%m-%d %H:%M:%S'`=="
echo "=========开始修改: $filename 文件=`date '+%Y-%m-%d %H:%M:%S'`==" >> modify_file_list.log

#下面这行代码就是修改文件内容。
tr -s "$oldip" "$newip" <$filename >$filename.out && mv $filename $filename.bak && mv $filename.out $filename

if [ $? -eq "0" ];then #判断修改内容是否成功。
echo "文件名 $filename 修改成功.."
echo "文件名 $filename 修改成功.." >> modify_file_list.log

echo "修改前内容: $oldip ;修改后的内容: $newip"
echo "修改前内容: $oldip ;修改后的内容: $newip" >> modify_file_list.log
else
echo "修改文件 $filename 失败。"
echo "修改文件 $filename 失败。" >> modify_file_list.log
fi

echo "=========$filename 文件修改结束=`date '+%Y-%m-%d %H:%M:%S'`=="
echo "=========$filename 文件修改结束=`date '+%Y-%m-%d %H:%M:%S'`==" >> modify_file_list.log
done

rm modify_temp_value #删除 modify_temp_value 文件。

tar cvf `date '+%Y-%m-%d_%H:%M:%S'`.cfg.tar -I modify_temp_file_list #文件进行打包。

for tempfilename in `awk '{print $1}' <modify_temp_file_list` #删除 .bak的文件。
do
rm $tempfilename
done

rm modify_temp_file_list #删除 modify_temp_file_list 文件
modify_file_list里的内容如下:
/export/home/test/study/filename1|192.168.1.1|192.168.1.7
/export/home/test/study/filename2|192.168.1.1|192.168.1.7
/export/home/test/study/filename3|192.168.1.1|192.168.1.7
/export/home/test/study/filename4|192.168.1.1|192.168.1.7
/export/home/test/study/filename5|oldString|newString
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: