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

swk的认识与使用【shell第五天】

[复制链接]

尚未签到

发表于 2018-8-20 10:11:12 | 显示全部楼层 |阅读模式
  核心:文本过滤
  查看/过滤文件
  与sed一样,逐行处理
  awk :过滤数据时支持仅打印某一列;若有多条编辑指令,可用分号分隔。
  【print 是最常用的编辑指令】
  格式:
  awk [选项] '[条件] {指令}' 文件
  例:
  实验文本:
  [root@server0 ~]# cat tmp.txt
  hello wolrd
  ni hao
  wo shi
  

      查看文本第一列:  

  [root@server0 ~]# awk '{print $1}' tmp.txt
  hello
  ni
  wo
  

   查看多列:  

  [root@server0 ~]# awk '{print $1,$2}' tmp.txt
  hello wolrd
  ni hao
  wo shi
  

  实用:【可管道给其他命令】  

  查看可用容量:
  

  [root@server0 ~]# df -h | awk '{print $4}'
  可用
  7.1G
  906M
  921M
  904M
  921M
  二)选项的使用:
  -F :可指定分隔符
  -F[:/] :可识别多种单个字符【可指定】
  例:【-F】
  查看/etc/passswd的第一列【以冒号为分隔符】
  [root@server0 ~]# awk -F: '{print $1}' /etc/passwd
  root
  bin
  daemon
  adm
  lp
  ...
  

        【-F[:/]】  

  [root@server0 ~]# awk -F[:/] '{print $1,$7}' /etc/passwd
  root root
  bin bin
  daemon sbin
  adm var
  lp var
  sync sbin
  shutdown sbin
  ...
  三)可与变量和常量结合使用
  常见变量:
  NR 文件当前行的行号
  NF 文件当前行的列数(有几列)
  例:
  【NR】
  [root@server0 ~]# awk -F:  '{print NR}' tmp.txt
  1
  2
  3
  【NF】
  [root@server0 ~]# awk -F: '{print NF}' tmp.txt
  1
  1
  1
  

       常量的使用【需加双引号】  

  例:
  [root@server0 ~]# awk -F: '{print $1,"的解释器为",$7}' /etc/passwd
  root 的解释器为 /bin/bash
  bin 的解释器为 /sbin/nologin
  daemon 的解释器为 /sbin/nologin
  adm 的解释器为 /sbin/nologin
  ...
  四)与正则的使用:
  [root@server0 ~]# cat tmp.txt
  hello wolrd
  ni hao
  wo shi
  

   【查看包含ni的行的第2列】  

  [root@server0 ~]# awk /ni/'{print $2}' tmp.txt
  hao
  

   【查看远程登陆失败的ip】  

  [root@server0 ~]# awk /Failed/'{print $11}' /var/log/secure
  172.25.0.10
  172.25.0.10
  五)awk处理时机
  格式:
  awk [选项] 'BEGIN{指令} {指令}END{指令}' 文件
  

BEGIN{ } 行前处理,读取文件内容前执行,指令执行1次  
{ } 逐行处理,读取文件过程中执行,指令执行n次
  
END{ } 行后处理,读取文件结束后执行,指令执行1次
  

  【先为x赋值为0,然后进行++最后输出x】
  

  [root@desktop0 ~]# awk 'BEGIN{x=0} /bash$/{x++}END{print x}' /etc/passwd
  2
  [root@desktop0 ~]# awk '/bash$/{x++}END{print x}' /etc/passwd  【默认0开始】
  4
  

       【按顺序列出用户名,uid,家目录,总和】  

  [root@desktop0 ~]# awk -F: 'BEGIN{print "yong" "UID" "jia" "zong" } {print $1,$3,$6}END{print "zong"NR }' /etc/passwd |column -t
  column -t  【自动对齐】
  六)awk处理条件
  1.使用正则设置条件 【模糊匹配】
  /正则/     在一整行里匹配
  $n~/正则/    $1~/正则/  $2~/正则/ 【第一列包括和第二列包括。。。】
  $n!~/正则/  取反
  [root@desktop0 ~]# awk -F:  '$7!~/nologin$/' /etc/passwd
  2.字符和数字的比较
  ==  !=  >  >= <

运维网声明 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.yunweiku.com/thread-554151-1-1.html 上篇帖子: 71.shell中的函数、数组 下篇帖子: shell脚本的变量赋值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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