awk -F: '{print $1; print $2}'   /etc/passwd                   // 将每一行的前二个字段,分行输出,进一步理解一行一行处理文本
awk  -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd        // 输出字段 1,3,6,以制表符作为分隔符
awk -F: '{print $1,$7}' OFS="\t"   /etc/passwd
awk -F":" '{print $1 $3}'  /etc/passwd                       //$1 与 $3 相连输出,不分隔

awk -F":" '{print $1,$3}'  /etc/passwd                       // 多了一个逗号,$1 与 $3 使用空格分隔

awk -F":" '{print $1 " " $3}'  /etc/passwd                  //$1 与 $3 之间手动添加空格分隔

awk -F":" '{print "Username:" $1 "\t\t Uid:" $3 }' /etc/passwd       // 自定义输出  

awk -F: '{print NF}' /etc/passwd                                // 显示每行有多少字段

awk -F: '{print $NF}' /etc/passwd                              // 将每行第 NF 个字段的值打印出来

 awk -F: 'NF==4 {print }' /etc/passwd                       // 显示只有 4 个字段的行

awk -F: 'NF>2{print $0}' /etc/passwd                       // 显示每行字段数量大于 2 的行

awk '{print NR,$0}' /etc/passwd                                 // 输出每行的行号

awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd      // 依次打印行号,字段数,最后字段值,制表符,每行内容

awk -F: 'NR==5{print}'  /etc/passwd                         // 显示第 5 行

awk -F: 'NR==5 || NR==6{print}'  /etc/passwd       // 显示第 5 行和第 6 行

route -n|awk 'NR!=1{print}'                                       // 不显示第一行

** 应用 1**

awk -F: '{print NF}' helloworld.sh                                                       // 输出文件每行有多少字段

awk -F: '{print $1,$2,$3,$4,$5}' helloworld.sh                                 // 输出前 5 个字段

awk -F: '{print $1,$2,$3,$4,$5}' OFS='\t' helloworld.sh                 // 输出前 5 个字段并使用制表符分隔输出

awk -F: '{print NR,$1,$2,$3,$4,$5}' OFS='\t' helloworld.sh           // 制表符分隔输出前 5 个字段,并打印行号



** 应用 2**

awk -F'[:#]' '{print NF}'  helloworld.sh                                                  // 指定多个分隔符: #,输出每行多少字段

awk -F'[:#]' '{print $1,$2,$3,$4,$5,$6,$7}' OFS='\t' helloworld.sh   // 制表符分隔输出多字段



** 应用 3**

awk -F'[:#/]' '{print NF}' helloworld.sh                                               // 指定三个分隔符,并输出每行字段数

awk -F'[:#/]' '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' helloworld.sh     // 制表符分隔输出多字段

** 应用 4**

计算/home目录下,普通文件的大小,使用KB作为单位

ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}'

ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",int(sum/1024),"KB"}'         //int 是取整的意思



** 应用 5**

统计netstat -anp 状态为LISTEN和CONNECT的连接数量分别是多少

netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n", i," ",sum[i]}'

** 应用 6**

统计/home目录下不同用户的普通文件的总数是多少?

ls -l|awk 'NR!=1 && !/^d/{sum[$3]++} END{for (i in sum) printf "%-6s %-5s %-3s \n",i," ",sum[i]}'   

mysql        199 

root           374 

统计/home目录下不同用户的普通文件的大小总size是多少?

ls -l|awk 'NR!=1 && !/^d/{sum[$3]+=$5} END{for (i in sum) printf "%-6s %-5s %-3s %-2s \n",i," ",sum[i]/1024/1024,"MB"}'

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品: PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    3000 引用 • 3701 回帖 • 661 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIXUnix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    508 引用 • 598 回帖 • 1045 关注
感谢    赞同    分享    收藏    关注    反对    举报    ...