1、日期常用命令
date '+%Y%m%d%H%M%S'
date '+%Y-%m-%d %H:%M:%S' -d '-1 day'
字符串转日期并作时间加减法
date -d "20130701 -i -1 month" +"%Y%m%d"
2、左补位
echo 11 |awk '{printf("%04d",$0)}'
3、求和
cat filename |awk 'BEGIN{total=0}{total+=$1}END{print total}'
4、判断文件夹是否存在并新建文件夹
if [ ! -d "/data/test" ]; then
mkdir /data/test
fi
5、删除文件大小为0的文件
find . -type f -size 0c | xargs -n 1 rm -f
ls -lrt |awk '{print $5 " " $9}'| grep ^0 |awk '{print $2}'|xargs rm -rf
6、 字符串截取
_INSERT_TABLE="CC_${_INSERT_MONTH:4:2}"
7、压缩、 解压
解压
tar zxvf FileName.tar.gz
压缩
tar zcvf FileName.tar.gz DirName
8、脚本传入参数判断
if [ $# -ne 1 ] ;then
echo error ${_SHELL_NAME} 输入参数个数不对 入参参数为年月 格式为 YYYYMM
exit 1
fi
9、根据年月获取当月天数
cal 3 2018 |sed -n '3,$p' |xargs |awk '{print $NF}'
10、文件拆分
#按文件大小拆分 -d 表示按数字划分 -a 表示后面接4位 -b 表示每个文件大小 -l 表示 行数
split -b 10m -d -a 4 server.log split_server.log_
split -l 100 -d -a 4 server.log split_server.log_
11、文件转码
iconv -t utf-8 -f gb2312 -c my_database.sql > new.sql
12、字符串全局替换 (替换当前目录下以sh结尾的文件, ceil 替换成round)
perl -pi -e 's|ceil|round|g' `find -name '*sh'`
13 、MD5加密
echo -n "sr" | md5sum
不加-n的话, 会带\n
14、字符串全局替换 (制表符替换为,)
sed -i "s/\t/,/g" filename
15、scp复制文件,-r可遍历文件夹并复制
scp appmon@10.8.8.8:/admin/upload/filename*.txt ./newfilename
16、批量杀进程
ps -ef|grep sshd | awk '{print $2}' |xargs -n 1 kill -9
# 查询进程按时间排序
ps aux --sort=start_time|grep Full|grep -v grep
17、长ping主机并记录丢包结果
for i in {1..180}; do ping 127.0.0.1 -c 10 |awk '{print strftime("%H:%M:%S",systime()) "\t" $0}' |grep transmitted >> 20220516.log; done
18、快速查找占用空间较大的文件夹
cat account.list |awk '{print "/"$1"/download"}' |xargs du -sh |egrep "^([1-9][0-9]*)+([g,G])"
cat account.list |awk '{print "/"$1"/download"}' |xargs du -sh |egrep "^([1-9][0-9]*)+(\.[0-9]{0,1})([t,T])"
更多推荐
shell 脚本编程常用命令
发布评论