shell 脚本编程常用命令

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 [email protected]:/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])"

猜你喜欢

转载自blog.csdn.net/u013240609/article/details/81910548