Awk学习_5


1.打印指定行

Q:如何用awk打印某一文件的第3行之后的所有行?

A:可以利用awk的NR变量。

搜索关键字:

http://search.aol.com/aol/search?q=awk+print+all+but+the+first+three+lines

结论:
$ awk 'NR>10' mem_cpu_usage.txt | wc -l
753

$ wc -l mem_cpu_usage.txt
763 mem_cpu_usage.txt
参考链接:

http://askubuntu.com/questions/475694/awk-command-to-print-all-the-lines-except-the-last-three-lines #有性能比较统计!

2.打印指定列

Q:如何用awk打印某一文件的第3列之后的所有列?

A:利用awk进行编程。

搜索关键字:

http://search.aol.com/aol/search?q=awk+print+all+but+the+first+three+columns

结论:
awk '{for(i=1;i<4;i++) $i="";print}' file
awk '{$1=$2=$3="";print}' file
awk '{ $1=""; $2=""; $3=""; print $0 }' file
参考链接:
3.去重
awk '{dict[$2]++}; END{for(i in dict) print dict[i]"\t"i}'    #count

awk '{dict[$2]=dict[$2]+$1}; END{for(i in dict) print dict[i]"\t"i}'	#sum

awk '{type["all"]+=$3; type[$2]+=$3} END{for(i in type) print i"\t"type[i]}'  #sum too

awk '{dict[$1]++}; END{for(i in dict) print dict[i]"\t"i}'  #count

ls -lt web_log/ | awk '$5!=5343{print $5}' | awk '{dict[$1]++}; END{for(i in dict) print dict[i]"\t"i}'
find web_log/ -iname "*.txt" | xargs ls -l | awk '$5!=5343{print $5}' | awk '{dict[$1]++}; END{for(i in dict) print dict[i]"\t"i}'
find web_log/ -iname "*.txt" | xargs ls -l | awk '$5!=5343{print $5}' | awk '{dict[$1]++; dict["all"]++}; END{for(i in dict) print dict[i]"\t"i}'

awk '$5==5343' | wc -l
4.一些应用
awk '$1 !~ /lo/ && NR!=1 && NR!=2' /proc/net/dev | awk 'BEGIN{max=0} {if($2+0 > max+0) max=$2 fi} END{print $1}' | awk -F':' '{print $1}'  #获取网卡名称

awk '$1 !~ /lo/' /proc/net/dev | awk 'BEGIN{max=0} {if($2+0 > max+0) max=$2 fi} END{print $1}' | awk -F':' '{print $1}'  #获取网卡名称

 

, ,

《 “Awk学习_5” 》 有 2 条评论

  1. Linux之使用awk计算系统已经运行的具体时间
    http://www.dwhd.org/20150725_022446.html
    `
    #计算在线时间
    awk ‘{a=$1/86400;b=($1%86400)/3600;c=($1%3600)/60;d=$1%60}{printf(“在线时间: “”%d天 %d小时 %d分钟 %d秒\n”,a,b,c,d)}’ /proc/uptime

    awk ‘{a=int($1/86400);b=int(($1%86400)/3600);c=int(($1%3600)/60);d=int($1%60)}{print “在线时间: “a”天”,b”时”,c”分”,d”秒”}’ /proc/uptime

    #计算具体开机时间
    date -d “$(awk ‘{printf(“%d\n”,$1~/./?int($1)+1:$1)}’ /proc/uptime) second ago” +”%F %T”
    `

发表回复

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