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