awk常用的就是处理列.

输出文件内容

# 打印所有内容
awk '{print}' filename
awk '{print $0}' filename
## 等同于cat filename

输出指定行

# 输出第3行
awk 'NR==3' filename
## 等同于
sed -n '3p' filename
head -3 filename|tail -1

# 输出第3到第5行
awk 'NR==3,NR==5' filename

#打印行号大于3的数据
awk ‘NR > 3’ filename

输出指定列

# 以:分割,打印第3列和第4列
awk -F":" '{ print $3,$4 }' /etc/passwd

# 带字符串拼接打印第3列和第4列
[rhel7 root ~]# awk -F":" '{ print "第三列:"$3, "\t第四列:"$4 }' /etc/passwd
第三列:0        第四列:0
第三列:1        第四列:1
第三列:2        第四列:2

# 打印第3列和第4列的第一行
awk -F":" 'NR==1{ print $3,$4 }' /etc/passwd
awk -F":" 'NR==1{print "第三列:"$3, "\t第四列:"$4 }' /etc/passwd
[rhel7 root ~]# awk -F":" 'NR==1{print "第三列:"$3, "\t第四列:"$4 }' /etc/passwd
第三列:0        第四列:0

输出前N列

awk -F":" 'NF=5' /etc/passwd

打印每一行的字数

# 统计每一行的字数
awk '{print NF}' filename

# 字符串拼接
awk '{print "行号:"NR "\t字数:"NF}' filename

输出最后一列

# 不分割字符串打印
awk '{print $NF}' /etc/passwd

# 以:分割,打印最后一列
awk -F":" '{ ptint $NF }' /etc/passwd
[rhel7 root ~]# awk -F":" '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin

消除空白行

awk NF filename

打印网卡配置中的ip地址

[rhel7 root ~]# ifconfig eth0|grep -w "inet"|awk '{print $2}'
192.168.0.93


[rhel7 root ~]# ip a show eth0|grep -w "inet"|awk '{print $2}'|awk -F "/" '{print $1}'
192.168.0.93