awk常用方法
https://blog.51cto.com/oldboy/5447610
awk常用的就是处理列
.
awk以指定符号分割-F
# 默认以 空格 分割
echo "Hello World! OpenAI GPT-3.5" | awk '{print $2}'
# -F以:分割,打印第3列和第4列
awk -F":" '{ print $3,$4 }' /etc/passwd
输出指定列
# 以:分割,打印第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列
# 输出前N列
awk -F":" 'NF=5' /etc/passwd
输出文件内容
# 打印所有内容
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
打印每一行的字数
# 统计每一行的字数
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地址
# 打印网卡配置中的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