1.1 awk 命令介绍

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符

1.2 常用参数

参数 作用
-F 指定分隔符

1.3 常用内置命令字符

字符 含义
$n 第n列(n为数字)
$0 整行
$NF 最后一列
$(NF-1) 倒数第二列
NR 行号
|| 逻辑或
&& 逻辑与
< <= > >= != == 关系运算符

1.4 使用实例

1.4.1 awk 取列

# 取第一列
awk '{print $1}' /etc/hosts

# 取最后一列
awk '{print $NF}' /etc/hosts

# 取倒数第二列
awk '{print $(NF-1)}' /etc/hosts

1.4.2 awk 取行

# 只取第一行
awk 'NR==1{print $0}' /etc/hosts

# 只取第一行的第二列
awk 'NR==1{print $2}' /etc/hosts

# 取第一行的倒数第两列
awk 'NR==1{print $NF,$(NF-1)}' /etc/hosts

1.4.3 awk 关系符运算符

# || 或者符
awk 'NR==1||NR==3{print $0}' /etc/passwd

# && 并且符
awk 'NR>=1&&NR<=3{print $0}' /etc/passwd

# < 小于
awk 'NR<2{print $0}' /etc/passwd

# <= 小于等于
awk 'NR<=2{print $0}' /etc/passwd

# > 大于
awk 'NR>2{print $0}' /etc/passwd

# >= 大于等于
awk 'NR>=2{print $0}' /etc/passwd

# == 等于
awk 'NR==2{print $0}' /etc/passwd

# != 不等于
awk 'NR!=2{print $0}' /etc/passwd