shell编程awk用法实例

(1)awk打印硬盘设备名称,默认以空格为分割,代码如下:

df -h|awk ‘{print $1}’
df -h | awk -F"" ‘{print $2}’

(2)awk以空格、冒号、\t、分号为分割,代码如下:

  awk -F '[ ;\t: ]' '{print $1}' 2.txt

(3)awk以冒号分割2.txt,打印第一列,同时将内容追加到/tmp/awk.log下,代码如下:

  awk -F: '{print $2}' 2.txt >> /tmp/awk.log

(4)打印1.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域,代码如下:

awk ‘NR>=3&&NR<=5’ 1.txt
awk ‘NR == 3,NR== 5’ 1.txt

(5)打印5.txt文件中的第3行至第5行的第一列与最后一列,代码如下:

awk ‘NR>=3&&NR<=5 {print 1 , 1, 1,NF}’ 5.txt

(6)打印3.txt文件中长度大于20的行号,代码如下:

awk ‘length($0)>20 {print NR}’ 3.txt

(7)awk引用shell变量,使用-v或者双引号+单引号即可,代码如下:

   str=hello | echo $str | awk '{print "'${str}'"}'

(8)awk以冒号切割,打印第一列同时只显示前3行,代码如下:

 awk -F: 'NR<=3 {print $1}' 2.txt

(9)awk指定文件5.txt第一列的总和,代码如下:

 cat 5.txt | awk '{sum+=$1} END{print sum}'

(10)awk NR行号除以2余数为0则跳过该行,继续执行下一行,打印在屏幕,代码如下:

   awk -F: 'NR%2 == 0 {next} {print NR,$1}' /etc/passwd
   awk 'NR%2 == 0 {next} {print NR,$0}' /etc/passwd

(11)awk添加自定义字符,代码如下:

1、ifconfig eth0 | grep “Bcast” | tr “\n”""|awk ‘{print “ip_”$2}’
2、awk -F"" ‘NR==1 {next} {print “你是-”$2}’ 5.txt

(12)awk格式化输出passwd内容,printf打印字符串,%格式化输出分隔符,s表示字符串类型,-12表示12个字符,-6表示6个字符,代码如下:

awk -F: ‘{printf “% -17s% -6s% -15s\n”,$1, 2 , 2, 2,NF}’ /etc/passwd

(13)awk OFS输出格式化\t,代码如下:

1、awk -F: ‘{print $1, 2 , 2, 2,NF }’ OFS="\t" /etc/passwd
2、netstat -an | awk ‘/LISTEN/&&NR>=1&&NR<=10 {print NR,$4,$5,$6}’ OFS="\t"

你可能感兴趣的:(Linux)