awk 比较倾向于,将一行数据分成数个『栏位』来处理,默认的『栏位的分隔符号为 "空白键" 或 "[tab]键" 』。较sed命令作用于一整行数据不同的是,awk 适合处理小型的数据数据处理。
语法
awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
- 如果不需要限制,则条件类型可为空。
- 每一行拆分后,每个栏位都是有变量名称的,那就是 2... 等
awk内置变量
image.pngawk 的处理流程
- 读入第一行,并将第一行的数据按栏位拆分,填入 $0, $1, $2.... 等变量当中;
- 依据 "条件类型" 的限制,判断是否需要进行后面的 "动作";
- 做完所有的动作与条件类型;
- 若还有后续的『行』的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止
示例
awk -F ':' '{print $1}' /etc/passwd
按照:进行分割,取第一个栏位awk 'BEGIN {FS=":"} {print $1 "\t" $3}' /etc/passwd
同上,另外一种写法awk -F ':' 'NR==1 {print $1}' /etc/passwd
按照:进行分割,如果目前处理的是第一行,则取第一个栏位awk -F ':' 'NR==1 {print $1};$1=="admin" {printf $1 "\t" $3}' /etc/passwd
多个动作时,利用分号或者回车键进行分割。
参考:http://cn.linux.vbird.org/linux_basic/0330regularex.php#awk
网友评论