awk-变量使用
作者:互联网
awk -F: '{print $1,$3}' /etc/passwd
awk -F: 'BEGIN{print "begin"}{print $1,$3}END{print "end"}' /etc/passwd
root@ubuntu2004:~# df | awk -F" +|%" '{print $1,$5}' Filesystem Use udev 0 tmpfs 1 /dev/mapper/ubuntu--vg-ubuntu--lv 13
root@ubuntu2004:~# awk '{print $1}' access_log |sort |uniq -c|sort -nr|head -n3 4870 172.20.116.228 3429 172.20.116.208 2834 172.20.0.222
1,awk变量
常见内置变量 (1)常见选项: -F “分隔符” 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符 -v var=value 变量赋值[root@localhost ~]# awk -v FS="/" '{print $1FS$3}' /etc/passwd root:x:0:0:root:/bin#-F 和 FS变量功能一样,同时使用会 -F 优先级高 (2).OFS:输入字段分隔符,默认为空白字符 awk -v FS="/" -v OFS="+++++++" '{print $1,$2}' /etc/passwd (3).RS :输入记录record分隔符,指定输入时的换行符
[root@localhost ~]# cat test.txt a,b,c;1,2,3;x,y,z; [root@localhost ~]# awk -v RS=";" -v FS="," '{print $1}' test.txt a 1 x(4)ORS:输出记录分隔符,指定输出时用指定符号代替换行符
[root@localhost ~]# awk -v RS=";" -v FS="," -v ORS="-" '{print $1}' test.txt a-1-x-(5).NF:字段数量
[root@localhost ~]# awk -F: '{print NF}' /etc/passwd 7 [root@localhost ~]# awk -F: '{print $NF}' /etc/passwd /bin/bash取最后一行
[root@localhost ~]# df | awk -F" +" '{print $(NF-1)}' Mounted 0% 0% 1% 0% 8% 100% 1% 26% 1% 0% [root@localhost ~]# df | awk -F" +|%" '{print $(NF-2)}' 0 0 1 0 8 100 1 26 1 0Established的HTTP连接的数
[root@localhost ~]# ss -nt | grep "^ESTAB"| awk -F" +|:" '{print $(NF-2)}' 192.168.80.144 192.168.80.181 192.168.80.1
取行数
root@ubuntu2004:~# awk 'NR==1' access_log 172.18.118.91 - - [20/May/2018:08:09:59 +0800] "GET / HTTP/1.1" 200 912 "-" "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 5.1; Trident/5.0)" root@ubuntu2004:~# awk '{print NR}' access_logFNR:各文件分别记录,记录编号
awk '{print NR,$0}' /etc/passwd
自定义变量
root@ubuntu2004:~# awk -v name="CHUAN" BEGIN'{print name}' CHUAN
printf左对齐 %-
%s:显示字符串 %d, %i:显示十进制整数 %f:显示为浮点数 %e, %E:显示科学计数法数值 %c:显示字符的ASCII码 %g, %G:以科学计数法或浮点形式显示数值 %u:无符号整数 %%:显示%自身
root@ubuntu2004:~# awk -F: '{printf "%-25s\n" ,$1}' /etc/passwd root daemon
root@ubuntu2004:~# awk -F: '{printf "%-25s %-25s\n" ,$1,$3}' /etc/passwd root 0 daemon 1
root@ubuntu2004:~# awk -F: '{printf "%-25s | %-25s\n" ,$1,$3}' /etc/passwd root | 0 daemon | 1
root@ubuntu2004:~# awk -F: '{printf "%-25s | %-25f\n" ,$1,$3}' /etc/passwd root | 0.000000 daemon | 1.000000
root@ubuntu2004:~# awk -F: '{printf "%-25s | %-25.3f\n" ,$1,$3}' /etc/passwd root | 0.000 daemon | 1.000
++i 加完了干 i++干完了加
root@ubuntu2004:~# awk 'BEGIN{i=0;print i++,i}' 0 1 root@ubuntu2004:~# awk 'BEGIN{i=0;print ++i,i}' 1 1 root@ubuntu2004:~# i=0;let j=i++;echo j=$j j=0 root@ubuntu2004:~# i=0;let j=++i;echo j=$j j=1
root@ubuntu2004:~# i=0;let j=i++;echo j=$j i=$i j=0 i=1 root@ubuntu2004:~# i=0;let j=++i;echo j=$j i=$i j=1 i=1
标签:ubuntu2004,passwd,etc,awk,使用,print,root,变量 来源: https://www.cnblogs.com/gxc888/p/16173073.html