linux-7 awk

目录

1.awk默认规则

2.处理方式

3.格式

4.运算

5.getline

6. 文件内容匹配过滤打印

7.begin . end模式

8.awk条件判断打印

9.awk三元表达

10.awk精准筛选

11.awk数组


1.awk默认规则

        当以多空格为分隔符时 自动压缩成一个

        默认操作就是打印

        默认分隔符时空格

2.处理方式

        先对行处理 再分列

3.格式

        -F " "  指定分隔符       -v 变量赋值

                内置变量

                        $0 全部打印     $n 第几列     NR 行号    NF 当前处理行字段数    $NF 最后一个字段

                        FS 列分隔符

                awk '{print $n}' 文件名                            打印第几列

                awk 'NR==行号 {print}'    文件名            打印第几行

                awk 'NR==1;NR==3{print}'   文件名       打印1-3行

                awk 'NR==1,NR==3{print}'   文件名       打印1和3行

4.运算

        awk 'BEGIN{print 10+10}'      20

5.getline

        awk内置函数

        当getline 左右无重定向符号(<>)或管道符(|) 打印奇偶行

                awk '{print $0;getline}'  文件名               打印奇数行

                awk '{getline;print $0}'  文件名               打印偶数行

                awk '{getline < "文件1";print $0 > "文件2";}'  文件1

                        从文件1全量传内容给文件2

                用 | 赋值变量

6. 文件内容匹配过滤打印

        awk '/^…/{print}'   以…开头

        awk '/…$/{print}'  以…结尾

7.begin . end模式

        awk 'BEGIN{};{};END{}'

8.awk条件判断打印

        awk -F: '$3>500{print $0}' /etc/passwd      打印/etc/passwd第三列大于500

        awk -F: '{if($3>10){print $0}}' /etc/passwd     打印/etc/passwd第三列大于10

9.awk三元表达

        awk -F: '{max=($3>=$4)?$3:$4;{print $0}}' /etc/passwd

10.awk精准筛选

        $n(>< ==) 用于对比数据

        $n~"字符串" 代表第n个字段包含某个字符串

        $n!~"字符串" 取反

        $n==" " 第n个字段为某个字符串

        $n!=" " 取反

        $NF 最后一个字段

11.awk数组

        awk 'BEGIN{a[0]=1;a[1]=2;a[2]=3;print a[1]}'     2

        awk 'BEGIN{a[0]=1;a[1]=2;a[2]=3;for(i in a)print i, a[i]}'     0    1

                                                                                                  1     2

                                                                                                  2     3

        索引下标去重

                awk '{a[$1]++};END{for(i in a){print i,a[i]}}' test.txt 

        

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值