[Linux]AWK入门
运行AWK程序
- awk '脚本内容' - 也可以把这些写到sh脚本文件中
- awk -f 脚本文件名
- 在脚本文件中第一行写入"#!/bin/awk -f",然后在shell中执行脚本文件
PATTERN
AWK程序的组织形式如下。
pattern { action }
AWK程序顺次读取输入的每一行,然后判定改行是否符合pattern,如果pattern为true,则对应的action执行。
有如下pattern:
[空] - 这个对应的action永远执行
BEGIN - 所有输入之前执行
END - 所有输入之后执行
action中最常用的是print,用法:
print list_of_打印项(seq=,)
支持转义字符。
支持变量,例如$3代表打印输入文本的第3列。
和sh不同,变量不能写在引号内。
变量
输入文本列
用$i代表第i列,其中i可以是立即数,也可以是变量
使用sh中的变量
直接在sh中赋值,然后在awk中使用这个变量——是不行的,下边做个对比说明
对比1 - 这个可以打印第二列
执行 awk 'BEGIN{x=2}{print $x}',相当于执行awk文件:
BEGIN { x=2}{print $x}
对比2 - 这个不可以打印第二列
执行 x=2 后,再执行 awk '{print $x}'
x变量并不被awk识别
对比2改进
执行 x=2 后,再执行 awk '{print $'$x'}',可以这么理解:
bash首先执行红色部分 awk '{print $'$x'}',结果为 awk '{print $2}'。