linux指令awk_linuxawk命令

linux指令awk_linuxawk命令[root@localhost ~]# cat file otherxxxx name: 123 book: abc book: efg tel:123456 other: xxxx name: 456 book: zzz tel: 123456 tel: 898989 otherxxx [root

[root@localhost ~]# cat file otherxxxx name: 123 book: abc book: efg tel:123456 other: xxxx name: 456 book: zzz tel: 123456 tel: 898989 otherxxx [root@localhost ~]# cat file |awk '/^book/' book: abc book: efg book: zzz [root@localhost ~]# awk 过滤以book开头的行

awk ‘/^book/’ 输出以book 开头的行,其实是省略了 {print $0}, 完整的语句是

awk ‘/^book/ {print $0}’这样。

[root@localhost ~]# cat file otherxxxx name: 123 book: abc book: efg tel:123456 other: xxxx name: 456 book: zzz tel: 123456 tel: 898989 otherxxx [root@localhost ~]# [root@localhost ~]# awk '/^book/' file book: abc book: efg book: zzz [root@localhost ~]# awk '/^book/{print $0}' file book: abc book: efg book: zzz [root@localhost ~]# awk -F ':' '/^book/{print $1}' file book book book [root@localhost ~]# awk -F ':' '/^book/{print $2}' file abc efg zzz [root@localhost ~]#

$NF : 表示列字段的数量

NR  : 表示当前的行号

 

[root@localhost ~]# cat -n file 1 otherxxxx 2 name: 123 3 book: abc 4 book: efg 5 tel:123456 6 other: xxxx 7 name: 456 8 book: zzz 9 tel: 123456 10 tel: 898989 11 otherxxx [root@localhost ~]# awk -F ':' '/^book/{print NR $2}' file 3 abc 4 efg 8 zzz [root@localhost ~]# [root@localhost ~]# awk -F ':' '/^book/{print NR $2"我是你爹"}' file 3 abc我是你爹 4 efg我是你爹 8 zzz我是你爹 [root@localhost ~]#

awk $0就表示一个记录

printf 默认不换行

print $0 就是打印整行内容

[root@localhost ~]# cat file |awk -F ':' '/^book/{printf $0}' book: abcbook: efgbook: zzz[root@localhost ~]# [root@localhost ~]# 可以END 输入一个变量xxxoo,因为xxxoo 为空,所以会换行 [root@localhost ~]# cat file |awk -F ':' '/^book/{printf $0}END{print xxxoo}' book: abcbook: efgbook: zzz [root@localhost ~]#
Awk 的数组 [root@localhost ~]# cat file a 1 a 2 b 3 b 4 [root@localhost ~]# cat file|awk '{a[$1]=a[$1]+$2}END{for(i in a) {print i,a[i]}}' a 3 b 7 [root@localhost ~]# [root@web1 ~]# cat file 1 2 3 4 5 6 7 8 9 10 [root@web1 ~]# cat file |awk '{a[NR]=$0}END{for(i=1;i<=NR;i++){print i,a[i]}}' 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 [root@web1 ~]# cat file |awk '{a[NR]=$0}END{for(i=1;i<=NR-3;i++){print i,a[i]}}' 1 1 2 2 3 3 4 4 5 5 6 6 7 7 [root@web1 ~]#

++a ==1 ?  先执行a+1, 再把结果和1 对比

A++ ==2 ? 先拿A和2对比,再执行A+1。

Awk 的所有正则都需要 // 斜线包起来。

 

数组去重: [root@web1 ~]# cat file 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 [root@web1 ~]# cat file |awk '!a[$0]++' 1 2 3 4 5 6 7 8 9 10 [root@web1 ~]# 按$4 列去重 [root@web1 ~]# cat file |wc -l 7 [root@web1 ~]# cat file 2018/1/10 liu aaa 1567623 2018/3/2 zhang sss 12845 2018/2/3 li bbc 13432345 2018/4/1 huang cc 12845 2018/2/3 bai gg cc 2018/1/10 du dd 12845 2018/9/3 qio cc 12845 [root@web1 ~]# cat file|awk '!a[$4]++' 2018/1/10 liu aaa 1567623 2018/3/2 zhang sss 12845 2018/2/3 li bbc 13432345 2018/2/3 bai gg cc [root@web1 ~]# cat file|awk '!a[$4]++'|wc -l 4 [root@web1 ~]# 或者

linux指令awk_linuxawk命令

Awk 计数: [root@web1 ~]# cat file 1 q 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 [root@web1 ~]# cat file |awk '{a[$1]=a[$1]+1}END{for(i in a){print i ,a[i]}}' 4 2 5 2 6 2 7 2 8 2 9 2 10 2 1 2 2 2 3 2 [root@web1 ~]#

linux指令awk_linuxawk命令

linux指令awk_linuxawk命令

awk处理2个文件:

 linux指令awk_linuxawk命令

 

今天的文章linux指令awk_linuxawk命令分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/48374.html

(0)
编程小号编程小号
上一篇 2023-09-04 07:46
下一篇 2023-09-04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注