一位朋友想批量删除程序中,有包含内容的.shtml文件末尾15行。涉及很多目录和文件,手动修改是不可能的,于是写了一个批处理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 ‘’ -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行)到文件末尾的所有行。