设为首页 收藏本站
查看: 970|回复: 0

Linux阶段总结shell脚本

[复制链接]

尚未签到

发表于 2018-8-19 08:03:54 | 显示全部楼层 |阅读模式
awk [选项] '[条件]{指令}' 文件  多条编辑指令,可用分号分隔
  默认将空格、制表符等作为分隔符
  (cut sort 也是是默认空格Tab)
  grep sed 不能直接打印某列要结合字符串的截取工具使用
  -F 可指定分隔符  识别多种单个的字符
  awk -F [:/] '{print $1,$10}' /etc/passwd
  awk常用内置变量:
  $0 文本当前行的全部内容
  $1  文本的第1列
  $3  文件的第3列,依此类推
  NR  文件当前行的行号
  NF  文件当前行的列数(有几列
  awk -F: '{print NR,NF}' passwd.txt
  awk -F: '{print NR,$NF}' /etc/passwd  永远打印最后一行!
  awk -F: '{print NR,$NR}' /etc/passwd  第几行的时候就打印第几列!
  可以打印常量:
  awk -F: '{print $1,"的解释器:",$7}' /etc/passwd
  打印常量必须要加双引号, 加逗号有空格,不加逗号无空格!
  案例:
  free |awk '/Mem/{print $NF}'    查看目前可用内存
  ifconfig eth0 | awk '/RX p/{print $5}'  查看接收流量!
  ifconfig eth0 | awk '/TX p/{print $5}'  查看发送流量!
  df -h | awk '/\/$/{print $4}' #:\/$代表对/转义!!看跟分区可用空间。
  df  | awk '/\/$/{print $4}'  故意不加单位 在脚本中好当成数值比较!!!
  df -h / | tail -1 | awk '{print $4}' 第一个/ 代表要看/(根)的情况 提取最后一行 给awk
  在网页中查看脚本:远程监控服务器网卡 内存等等情况(相当于动态页面了)
  rpm -qa | grep httpd
  cp /root/share/test5-19-1.sh /var/www/cgi-bin/test5-19-1.html   必须放在脚本专用目录下
  chmod +x /var/www/cgi-bin/test5-19-1.html   必须要加X不然访问不了要报404. 看到404就检查有没有X
  systemctl stop firewalld
  setenforce 0
  ip/cgi-bin/test5-19-1.html   访问验证!!!
  tips:
  要想使访问时换行显示,要在/var/www/cgi-bin/test5-19-1.html 给这个文件加然后再重启服务!!
  而不是改之前的脚本文件,思路一定要清晰啊小伙子。
  tips:
  如果cp -P test5-19-1.html /var/www/html/
  http://192.168.4.20/test5-19-1.html
  访问到的就不是脚本执行的结果了,就是html 代码执行的结果了。如下
  #!/bin/bash echo "Content-type: text/html" echo "" ifconfig eth0 | awk '/netmask/{print "Ip:"$2}' echo "
  " ifconfig eth0 | awk '/RX p/{print "接收流量:"$5}' echo "
  " ifconfig eth0 | awk '/TX p/{print "发送流量:"$5}' echo "
  " df | awk '/\/$/{print "根分区可用:"$4}' echo "
  " free |awk '/Mem/{print "内存可用:"$NF}'
  路径一定要是/var/www/cgi-bin/test5-19-1.html 才能访问到脚步执行结果。(在未修改配置文件前提下)
  格式化输出:
  awk处理的时机:
  处理第一行之前做准备工作    只做预处理的时候,可以没有操作文件
  awk 'BEGIN{print x+1}'           #x可以不定义,直接用,默认值位0
  中间进行逐行处理
  处理完最后一行做总结
  awk  [选项]  ' BEGIN{指令} {指令} END{指令}'  文件
  BEGIN{ }    行前处理,读取文件内容前执行,指令执行1次
  { }     逐行处理,读取文件过程中执行,指令执行n次
  END{ }      行后处理,读取文件结束后执行,指令执行1次
  统计系统中使用bash作为登录Shell的用户总个数
  awk 'BEGIN{x=0}/bash$/{x++} END{print x}' /etc/passwd
  awk '/bash$/{x++} END{print x}' /etc/passwd  与上条命令等效 x未定义默认为0
  格式化输出/etc/passwd
  awk -F: 'BEGIN{print "User\tUID\tHome"} \
  {print $1 "\t"  $3  "\t"  $6}     \     使用“\t”显示Tab制表位
  END{print "Total",NR,"lines."}' /etc/passwd
  awk -F: 'BEGIN{print "用户名   家目录   UID"} {print $1,$6,$3 x++} END{print "总共"x"行"}' /etc/passwd
  awk -F: 'BEGIN{print "用户名","家目录","UID"} {print $1,$6,$3} END{print "总共"NR"行"}' /etc/passwd
  awk -F: 'BEGIN{print "用户名","家目录","UID"} {print $1,$6,$3 x++} END{print "总用户量:"x }' /etc/passwd
  END{print "总共"NR"行"}  END{print "总共"x"行"}  打印最后的时候:注意变量不要引号,常量要引号,这是个坑啊!!!
  awk -F: 'BEGIN{print "用户名\t家目录\tUID"} {print $1"\t"$6"\t"$3 x++}END{print "总用户量:"x }' /etc/passwd | column -t
  column -t 自动排版对齐!!!awk -F: '{print $1,$2,$3 }' /etc/passwd | column -t
  awk处理条件:
  正则
  awk -F: '/bash$/{print}' /etc/passwd
  awk -F: '$1~/(zhangsan|root)/{print $7}' /etc/passwd  (支持扩展的正则)
  ~代表匹配:$1匹配后面的正则。并且是包含就算,模糊匹配 #第一列包含root或zhangsan的打印第7列。
  [root@D share]# awk -F: '$1~/^root/' /etc/passwd
  root:x:0:0:root:/root:/bin/bash
  roota:x:1004:1024::/home/roota:/bin/bash    模糊匹配
  awk -F: '$7!~/nologin$/{print $1,$7}' /etc/passwd    !~不匹配
  使用数值/字符串比较设置条件
  比较符号:== != > >= <

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-553656-1-1.html 上篇帖子: shell脚本常用脚本:while 下篇帖子: shell变量学习记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表