其实已经有1年多差不多2年时间没有写过shell脚本了,记得上一个shell脚本,属于比较长而且涉及多个服务的一键部署脚本。其中包含自动部署Nginx、MariaDB、IPSec、pptpd、uwsgi等服务,用于运行一个django项目由很多基础命令组合而成的笨shell脚本。
这些天更新 django-idcops这个项目有些疲累了,再加上一些工作需要重新复习了一下Linux服务器的几个命令(而后不小心发现了《sed与awk》这本书竟然好贵)。以下一些操作都是比较碎片化的,主要是为了进一步理解和加深记忆而写。
1、循环中打印出循环的次数:
index=0;for i in $(ls .); do let index+=1;echo $index: $i; done
2、awk 按列数据筛选特定行:
netstat -atn|awk '$6 == "LISTEN" && $4 ~/80|22/ ||NR==2 '
上面通过awk命令筛选本机LISTEN的80端口或22端口以及第2行信息一并打印出来。
3、awk 简单求和、除法等算术计算:
awk 'NF >= 17 && $13 ~/Minimal/ENDEND' download.log
上面为download.log日志格式,上面指令的意思是:
从download.log日志中筛选并打印由空格分隔,列数数量大于等于17列(文件size[字节]),并且第13列(下载的文件名)中包含"Minimal"字符串的所有匹配到的行,并在最后计算出所有下载的 asize(字节)与 atime (时间秒)的比率。
4、awk配合sort或uniq指令统计nginx访问日志access.log前十IP地址以及各个IP地址访问次数:
awk 'END}' access.log|sort -rnk 1|head -10
5、grep配合sed命令修改所有包含某字符串的所有指定文件,并在原文件中直接执行替换操作:
sed -i "s/
暂时就复习了这么多。awk配合sed真的是很强大,但是sed连入门的操作都不会
他没什么才华只是在ctrl+c ctrl+v
还请大家关注支持一下作者
领取专属 10元无门槛券
私享最新 技术干货