shuaiwei588 发表于 2018-8-20 12:56:52

shell之awk

  简介
  awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行读入,以空格为默认分割符将每行切片,切开的部分再进行各种分析处理。
  使用方法:
  awk 'pattern1{action1}pattern2{action2}' {filenames}
  尽管操作可能会很复杂,但语法总是这样,其中pattern表示awk在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。
  awk内置的三个变量
  NF:表示当前的所有字段$NF表示最后一个字段
  FS:默认以空格符为分割符
  NR:awk读取到了哪一行
  awk基础用法
  1、regexp:正则表达式,格式为/regular expreesion/
  awk -F : '$3>=500{printf $1 "\n" $3 "\n"}' /etc/passwd
  2、expression:表达式,其只非0或为非空字符时满足条件,例如~表示匹配(类似grep查找行匹配)
  awk -F : '$7!~"bash$"{printf $7 "\n"}' /etc/passwd
  3、ranges:指定匹配范围,格式为pat1,pat2
  awk -F : '$3 == 0,$7~"nologin$"{printf $1 "\t" $7 "\n"}' /etc/passwd
  4、BEGIN/END:特殊模式,
  awk -F : 'BEGIN{printf "Username    shell\n"}$3 == 0,$7~"nologin$"{printf $1 "\t" $7 "\n"}' /etc/passwd
  5、空模式:表示没有任意匹配选项

页: [1]
查看完整版本: shell之awk