awk 笔记之一

awk最基本的功能是搜索文件中的匹配某一字符串的文本行,并可对匹配行执行指定的动作(Action).


1. awk 脚本或者说程序的基本格式是 

 pattern  {  action }

    pattern 指定了匹配规制, action指定了对匹配行将进行的操作.


2. 脚本的使用方式:

    a) 在shell命令行中, 将脚本作为awk的参数执行. 脚本用单引号包含.如

         awk  ' /abc/ { print } '  foo.txt

        其中 /abc/ 为 pattern, print 为执行的操作, foo.txt为待搜索的文件.

    b) 将脚本写入文件中,  通过awk -f 选项指定, 如:

       awk -f aaa foo.txt

       其中的aaa文件中,就是包含了脚本的文件.

    c) 自执行脚本文件, awk 脚本, 同样可以想shell, perl等脚本一样, 直接在shell命令行上执行,而不需要前面加上awk, 如:

       ./aaa.awk foo.txt

       不过对于aaa,需要在开头指定执行脚本的程序,这个跟perl等类似, 就是使用#!制定命令路径,  aaa.awk文件内容如下:

        #!/usr/bin/awk -f

  /abc/ { print }   

3.  实用例子

       awk 脚本的 pattern 和 action 可以只包含其中的一个,如果pattern为空, 则对输入文件的每一行都进行操作, 如果action部分为空( {} 也不写), 则执行缺省操作--打印文本行

       pattern BEGIN 表示文件开头, END 表示文件结尾

       a) 输入文件中最长文本行的长度

            awk ’{ if (length($0) > max) max = length($0) }
END { print max }’ inputfile

       b) 打印文件中,长度超过80的行

             awk ' length($0) > 80 ' inputfile

            缺省动作为print, 所以省略

       c)  打印字段数大于1的行

             awk ' NF>1' inputfile

        d) 打印当前目录, 所有文件大小的和

             ls -l | awk ' { x += $5 } 

END { print "total bytes : " x }'

          e) 打印输入文件的行数

               awk ' END { print NR } ' inputfile

           f) 打印偶数行

               awk 'NR%2==0' inputfile


           


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值