awk是一款强大的文本分析工具,主要的功能如下:
- 逐行扫描文本
- 按列分割文本
- 对行列做模式匹配
- 处理匹配行
扫描
文件打印的时候,经常需要做一些加工处理,比如打印行号,打印某几行某几列,打印匹配的行等需要,命令如下:
#打印整个文件
awk '{print}' <file path>
#打印行号
awk '{print NR, $0}' <file path>
#打印部分行
awk 'NR==<start number>,NR==<end number> {print NR, $0}' <file path>
分割
如果文本按照空格分割,用户可以自由组合输出任何几列,从数字1开始,如下:
#打印第一列和最后一列
awk '{print $1, $NF}' <file path>
#用冒号分割列,从11行到12行,打印第一列和第二列
awk -F':' 'NR==11, NR==12 {print $1, $2}' <file path>
匹配
#打印匹配行,第一列和第二列
awk '/<match string>/ {print $1,$2}' <file path>
#打印第二列匹配的行
awk '$2 ~ /<match string>/ {print}' <file path>
#打印第二列完全匹配的行:
awk '$2 ~ /^<match string>$/ {print}' <file path>
条件
# 打印第四列大于5000的列
awk '$4 > 5000 {print}' <file path>
运算
打印的时候,列可以做算数元算:+-*/%^
# 打印幂
echo "2 3\n2 4" | awk '{print $1^$2}'