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

linux shell sed awk 命令(2)-awk

[复制链接]

尚未签到

发表于 2018-8-27 08:17:19 | 显示全部楼层 |阅读模式
  linux shell sed awk 命令(2)-awk
  awk语法格式:
  awk [选项] -f program-file [ -- ] file ...
  选项:
  -F fs, --field-separator fs
  制定以fs作为输入行的分隔符(默认分隔符为空格或制表符)
  -v var=val, --assign var=val
  在执行过程以前,设置一个var值为val
  -f program-file, --file program-file
  从脚本文件中读取awk指令,以取代在命令参数中输入处理脚本
  -W compat, -W copyright, --compat, --traditional
  使用兼容模式运行awk,GUN扩展选项将被忽略
  -W dump-variables[=file], --dump-variables[=file]
  打印全局变量(变量,类型,值)到文件中,如果没有提供文件名,则自动输出至名为dump-variables文件中
  awk -W dump-variables=out.txt 'x=1 {print x}' test.txt
  eg:
  1.通过正则表达式/^$/匹配空白行
  awk '/^$/ {print "Blank line"}' eth0
  2.打印包含主机名的行,没有指定动作指令.默认动作为打印
  awk '/HOSTNAME/' /etc/sysconfig/network
  3.指定脚本-f
  (1)awk.sh内容如下:
  /^$/ {print "Blank line"}
  (2) awk -f awk.sh eth0
  Blank line
  Blank line
  Blank line
  Blank line
  Blank line
  记录与字段
  echo hello world abc | awk '{print $1,$2,$3}'
  hello world abc
  echo hello world abc | awk '{print $0}'
  hello world abc
  echo hello world abc | awk '{print NF}'
  3
  echo hello world abc | awk '{print $NF}'
  abc
  字段分隔符
  awk -F:  '{print $1}' /etc/passwd
  awk 'BEGIN {FS=":"} {print $1}' passwd
  //指定多个分隔符
  echo 'hello the:world,!' | awk 'BEGIN {FS="[:, ]"} {print $1,$2,$3,$4}'
  内置变量
  ARGC    命令行参数
  FILENAME    当前输入文档名称
  FNR        当前输入文档
  NR        输入流的当前记录编号
  NF        当前记录字段数
  FS        字符分割符
  OFS        输出字段分隔符,默认空格
  ORS        输出记录分隔符,默认为换行符\n
  RS            输入记录分隔符,默认为换行符\n
  表达式与操作符
  四则运算 + - * /
  % 取余    ^    幂运算 
  自加自减
  ++ --
  ~匹配 !~不匹配
  echo "test" | awk 'x=2 {print x+3}'
  awk -F: '$1~/root/ {print $3}' /etc/passwd   //打印root的ID号
  awk -F: '$3>500 {print $1}' /etc/passwd //列出ID号大于500的用户名
  awk语法规则
  if (表达式)
  动作
  else
  动作
  if (表达式) 动作;else 动作
  eg:
  //判读sda4容量小于20MB时报警,否则显示ok
  df -h | grep "sda4"  | awk '{if ($4

运维网声明 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-557032-1-1.html 上篇帖子: SHELL脚本中 tput 的使用技巧 (tput 控制光标位置) 下篇帖子: linux shell 快捷键.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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