初学gawk

gawk

      了解gawk之前我们先来了解一下他的前身awk,awk是一款功能强悍的文本编辑器,有内置变量和内置函数,用户还可以根据自己的需要随意设置变量,其功能远远强于sed,几乎接近于bash。

      gawk即gun gawk,是awk的升级版,功能强于awk,所以我们直接来学习gawk。

      首先,了解gawk的运行机制:

          对于gawk来说根据内置的变量来设定换行符,每次读取一行文件称为record,然后以自己的内置变量对这一行进行切片,每一片称为field,将第一个field赋值给$1依次类推,我们提取变量$1就可以取得第一个field的值,$0表示gawk切片之后的一整行。(默认内置变量为空格)。

       接下来,我们学习gawk的命令格式:

         gawk options 'program' file
             pattern{action}
             pattern{action}
                   ....

pattern指模式匹配,格式主要有:
     1、 //:中间输入匹配的内容,即正则表达式 ,如:gawk '/^[a-z]/{print $0} /etc/fstab' 输出文件中以字母开头的行,(默认gawk不区分大小写)

     2、Expression :表达式

     3、pat1,pat2:指定范围的匹配 处理从第一个匹配pat1到第一个匹配的pat2之间的内容
     4、BEGIN:用来实现在action执行之前改变内建变量的值,或在输出时打上标题
END:在action执行之后执行某些动作。 
          BEGIN和END都只执行一次。
{action}指对模式匹配的行进行action处理,主要命令有
 print:显示出,如:gawk '{print $2}' /etc/fstab 显示出匹配模式的第2段

        最后我们了解一下让gawk功能强大的内置变量:

 gawk内置的四个变量来定义record和field的分隔符:
   1、FS 指定读入文件的时候分隔符 gawk 'BEGIN{FS=":"}{print $1}' /etc/passwd 将读入文件的分隔符设定为“:”
或者用gawk -F:'{print $1}' /etc/passwd -F也是用来设定读入文件分割符为“:”
   2、RS 指定读入文件的时的换行符 gawk 'BEGIN{FS=":";RS";"}{print $1}' /etc/passwd 将读入文件时的换行符设定为“;”
   3、OFS 指定显示时分隔符 gawk 'BEGIN{FS=":";OFS"@"}{print $1}' /etc/passwd将显示时的分隔符设置为“@”
   4、ORS 指定显示时换行符 gawk 'BEGIN{FS=":";ORS" "}{print $1}' /etc/passwd 将显示时的换行符设定为空格。
gawk其他的内置变量变量
   NF:统计每一行有多少个字段
   NR: 统计正在处理的这一行在为第几行

通过习题检查、巩固知识:

gawk练习
1、如何通过gawk取得主机的地址
ifconfig eth0 | gawk '/inet addr/{print $2}'
2、用gawk显示/proc/meminfo文件中的第二段内容,然后把分隔符改为:再显示出第二段内容
gawk '//{print$2}' /proc/meminfo     gawk 'BEGIN {OFS":"} //{print$2}' /proc/meminfo
3、用gawk显示/proc/meminfo文件中的内容,但要求添加标题:
   gawk 'BEGIN{print"NAME             toal" }{print $0}' /proc/meminfo

本文出自 “redhat” 博客,谢绝转载!

你可能感兴趣的:(职场,awk,gawk,休闲)