当前位置: 移动技术网 > 科技>操作系统>Linux > 精通awk系列(10):awk筛选行和处理字段的示例

精通awk系列(10):awk筛选行和处理字段的示例

2019年11月24日  | 移动技术网科技  | 我要评论
回到: "Linux系列文章" "Shell系列文章" "Awk系列文章" awk数据筛选示例 筛选行 awk运维面试试题 从ifconfig命令的结果中筛选出除了lo网卡外的所有IPv4地址。 ...

回到:


awk数据筛选示例

筛选行

# 1.根据行号筛选
awk 'nr==2' a.txt   # 筛选出第二行
awk 'nr>=2' a.txt   # 输出第2行和之后的行

# 2.根据正则表达式筛选整行
awk '/qq.com/' a.txt       # 输出带有qq.com的行
awk '$0 ~ /qq.com/' a.txt  # 等价于上面命令
awk '/^[^@]+$/' a.txt      # 输出不包含@符号的行
awk '!/@/' a.txt           # 输出不包含@符号的行

# 3.根据字段来筛选行
awk '($4+0) > 24{print $0}' a.txt  # 输出第4字段大于24的行
awk '$5 ~ /qq.com/' a.txt   # 输出第5字段包含qq.com的行

# 4.将多个筛选条件结合起来进行筛选
awk 'nr>=2 && nr<=7' a.txt 
awk '$3=="male" && $6 ~ /^170/' a.txt       
awk '$3=="male" || $6 ~ /^170/' a.txt  

# 5.按照范围进行筛选 flip flop
# pattern1,pattern2{action}
awk 'nr==2,nr==7' a.txt        # 输出第2到第7行
awk 'nr==2,$6 ~ /^170/' a.txt

处理字段

修改字段时,一定要注意,可能带来的联动效应:即使用ofs重建$0。

awk 'nr>1{$4=$4+5;print $0}' a.txt
awk 'begin{ofs="-"}nr>1{$4=$4+5;print $0}' a.txt
awk 'nr>1{$6=$6"*";print $0}' a.txt

awk运维面试试题

从ifconfig命令的结果中筛选出除了lo网卡外的所有ipv4地址。

# 1.法一:多条件筛选
ifconfig | awk '/inet / && !($2 ~ /^127/){print $2}'

# 2.法二:按段落读取,然后取ipv4字段
ifconfig | awk 'begin{rs=""}!/lo/{print $6}'

# 3.法三:按段落读取,每行1字段,然后取ipv4字段
ifconfig | awk 'begin{rs="";fs="\n"}!/lo/{$0=$2;fs=" ";$0=$0;print $2}'

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网