linux-7 awk

该文详细介绍了awk命令的基本用法,包括默认规则(如分隔符处理),处理行和列的方式,格式设定,算术运算,getline函数的使用,文件内容的匹配和过滤,begin和end模式,条件判断打印,三元表达式以及数组的操作。awk是一种强大的文本分析工具,文中通过实例展示了其在处理文本数据时的灵活性和效率。
摘要由CSDN通过智能技术生成

目录

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 

        

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值