Linux高级文本处理之gawk的使用(2)

14.只显示ID为1000的用户的相关信息

# awk -F: '$3=="1000" {print $0}' /etc/passwd mageedu:x:1000:1000:mageedu:/home/mageedu:/bin/bash # awk -F: '$3=="1000" {print $1,$3,$NF}' /etc/passwd mageedu 1000 /bin/bash

15.查找“root”关键字的行

# awk '/[Rr]oot/' /etc/passwd

16.利用awk模拟tail -1 的效果

# awk 'END{ print }' /etc/passwd

17.打印一个表头,并且打印用户名和ID

# awk -F: 'BEGIN{print "Name\t\tID\n--------"} {print $1"\t\t"$3}' /etc/passwd

18.打印一个表头和表尾,并打印用户名,ID,及shell

# awk -F: 'BEGIN{print "username    ID    shell"}{printf "%-20s%-10s%-10s\n",$1,$3,$7}\ END{print "-----end of report-----"}' /etc/passwd

19.对文本中的字段进行字符个数统计

# awk '/^[[:space:]]*linux16/{i=1;while(i<=NF){print $i,length($i);i++}}' /etc/grub2.cfg

20.打印字符个数大于等于8的字段

# awk -F: '{i=1;while(i<=NF){if(length($i)>=8){print $i};i++}}' /etc/passwd

21.统计系统中shell的类型,并打印shell引用的次数

# awk -F: '$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i\n" ,A,BASH[A]}}' /etc/passwd

22.统计fstab文件中,各文件系统被引用的次数

# awk '/^UUID/{filesystem[$3]++}END{for (i in filesystem) {print i,filesystem[i]}}' /etc/fstab

23.统计正与系统建立连接的IP地址(ESTABLISHED),并统计建立连接的连接数量

# netstat -tn | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for(i in count)print i,count[i]}' # netstat -tan | awk '{print $5}' | sort  -n | cut -d: -f1 | uniq -c | sort -n

24.将文本的重复行去掉

# awk '!a[$0]++' FILE      $ awk '{if($9~/404/)a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

25.打印偶数行

$ seq 1 5 |awk '!(i=!i)' $ seq 1 5 |awk 'NR%2==0'

26.打印奇数行

$ seq 1 5 |awk 'i=!i' $ seq 1 5 |awk 'NR%2!=0'

27.打印九九乘法表

[root@localhost ~]# awk ' >BEGIN{for(n=0;n++<9;) >{for(i=0;i++<n;) >printf i"x"n"="i*n" ";print ""}}' 1x1=1  1x2=2 2x2=4  1x3=3 2x3=6 3x3=9  1x4=4 2x4=8 3x4=12 4x4=16  1x5=5 2x5=10 3x5=15 4x5=20 5x5=25  1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36  1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49  1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64  1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

28.删除重复行

[root@localhost ~]# awk '!a[$0]++' num #!优先级高于++

29.找出两个文件相同的行

[root@localhost ~]# awk 'FNR==NR{a[$0];next}($0 in a)' num num1

本文永久更新链接地址

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14412.html