查找文件并删除末尾指定行数的shell脚本

发布时间:2020-03-31编辑:脚本学堂
要求:批量删除程序中,有包含www.jbxue.com内容的.shtml文件末尾15行。涉及很多目录和文件,手动修改是不可能的,于是写了一个批处理shell脚本。

要求:
批量删除程序中,有包含www.jb200.com内容的.shtml文件末尾15行。
涉及很多目录和文件,手动修改是不可能的,于是写了一个批处理shell/ target=_blank class=infotextkey>shell脚本
 

复制代码 代码如下:

#!/bin/bash
#function:删除最后15行
#author:roc
#date:2012-10-8

#文件log
log=/tmp/del_html.log
echo “##############`date`Start############”>>$log
echo “Work Dir:`pwd`”>>$log

#进入要删除文件的目录
cd /root/
for i in `find ./ -name “*.shtml” -exec grep ‘www.jb200.com’ -l {} ;`
do

#记录被删除的文件
echo $i | tee -a $log
A=$(sed -n ‘$=’ $i)
sed -i $(($A-15+1)),${A}d $i
done
echo “###############`date`End#############”>>$log

说明:
A=$(sed -n ‘$=’ $i)
sed -i $(($A-3+1)),${A}d $i

或者使用上面两条命令。删除的是倒数3行的。
如果删除倒数300 ,那就把3改为300 就可以了。

-i 是要在原文件上修改。如果不需要修改,就不用i 了。

另外,如果想删除指定行数到末尾,可以使用下面方法:
其中 ,sed ’2,$d’ -i $i
这条命令是 删除从第2行(包括第2行)到文件末尾的所有行。