一次读取一行文本,按输入分隔符进行切片,切成多个组成部分,将每片直接保存在内建的变量中,$1,$2,$3….,引用指定的变量,可以显示指定断,或者多个断。如果需要显示全部的,需要使用$0来引用。可以对单个片断进行判断,也可以对所有断进行循环判断。其默认分隔符为空格
-F
: 指明输入时用到的字段分隔符 -v var=VALUE
: 自定义变量 $
,而是直接引用 awk [options] ‘scripts’ file1,file2…..
在这种模式中,scripts主要是命令的堆砌,对输入的文本行进行处理,通过命令print,printf或是输出重定向的方式显示出来,这里经常用到的知识点是:awk的内置变量,以及命令print和printf的使用
awk [options] ‘PATTERN{action}’ file,file2…..
在这种模式中,最重要的是5种模式和5种action的使用,以及awk的数组的使用和内置函数
1、print
2、内置变量
FS
: input field seperator,输入的分隔符,默认为空白字符 OFS
: output field seperator,输出的分隔符,默认为空白字符 RS
: input record seperator,输入的换行符 ORS
: output record seperator,输出时的换行符 NF
: number of field ,字段个数 NR
: number of record,文件中的行数 FNR
: 对每个文件进行行数单独编号 FILENAME
: awk命令所处理的文件的名称 ARGC
: 命令行中参数的个数,其awk命令也算一个参数 ARGV
: 其是一个数组,保存的是命令行所给定的各参数 3、自定义变量
-v var=VALUE
: 在选项位置定义 awk 'BEGIN{test="hello";print test}'
: 在program中定义 变量在program中定义时,需要使用引号引起来
4、printf命令
要点:
格式符
%c
: 显示字符的ASCII码 %d
, %i
: 显示十进制整数 %e
, %E
: 科学计数法数值显示 %f
: 显示为浮点数 %g
, %G
: 以科学数法或浮点形式显示数值 %s
: 显示字符串 %u
: 无符号整数 %%
: 显示%号自身,相当于转义 修饰符
N
: 显示宽度 -
: 左对齐(默认为右对齐) +
: 显示数值符号 输出重定向
特殊文件描述符: /dev/stdin :标准输入 /dev/stdout:标准输出 /dev/stderr:错误输出 /dev/fd/N : 某特定文件描述符,如/dev/stdin就相当于/dev/fd/0
* 示例 * awk -F: '{printf "%-15s %i/n",$1,$3 > "/dev/stderr"}' /etc/passwd
文章出处——运维部落微信公众号