shell学习4--awk的基本使用

      awk是一种用于处理数据和生成报告的编程语言。常用脚本管理小型数据库的自动化处理。
      awk是三个姓的首字母,代表三位作者:Alfred Aho,Brian Kernighan,Peter Weinberger。
     工作原理:
             1. 逐行扫描文件,从第一行到最后一行,查找匹配某个特殊模式(如果有)的文本行,并对这些行执行指定动作(括在大括号内);
             2. 如果没有模式说明,则指定动作对所有行生效(处理所有行);
             3. 如果没有指定动作,则对匹配到的行输出到屏幕上。
     命令格式:awk  [  'pattern' | '{action}' | '/pattern/{action}'  ]   filename
                  eg: awd   ‘/hello/{print}'   file1       #打印file1中包行“hello”字符串的行。
            1. pattern:匹配模式,某种表达式组成的语句。如果某个表达式中虽然没有出现关键字if,但是计算它的时候却想到了if这个词,那么这个表达式就是模式,一般是正则表达式、判别条件真伪的表达式或者两者的组合构成。
                     eg:awk  ‘/Tom/‘  file2             #正则表达式写在“/”“/”之间
                     eg:awk  ’$3<4000' file3
             2. action:指定动作,由括在大括号内的一条或者多条语句组成,语句之间用分号“;”或者换行符“ \n ”分割。如果动作前面有个匹配模式,则表示匹配成功才执行该动作。
             3.filename:数据来源。如果没有,则表示数据从stdin输入,可能是键盘,也可能是管道。
                      管道输入:command | awk命令
                       eg:cat /etc/passwd  |  awk ‘/^root/{print $1}  # 打印/etc/passwd文件中root开头的行的第一个字段(默认以空格符分割)。

         awk常用命令:
                       -f     指定  '/pattern/'  '{action}'  |  '/pattern/{action}'   ] 脚本,类同于sed的-f
                       -F    指定分割符,默认是空格。 eg: -F:  指定以“:”作为分割符。
                                指定多个分割符 -F‘[分割符1分割符2...]'
                          eg:-F'[ :/]   指定以空格:/作为分割符,无论遇到哪个,都作为一个新字段field。
                          如   hello ha:tomorrow/night,have      
                         分割成 "hello","ha","tommorrow","night,have"四个字段
           其他常用基本用法:
                         1. 匹配操作符: ~      用于对记录或者字段的表达式匹配
                           eg:  awk   ‘$1 ~  /[Bb]ill/'  file1 #输出第一字段包含bill或者Bill的行
                         2. 非:! 
                           eg:  awd   ‘   ‘$1 !~  /[Bb]ill/'  file1   #输出第一字段不包含bill或者Bill的行

你可能感兴趣的:(linux)