linux-awk
awk由三个人开发
有多种版本:New awk(nawk),GNU awk( gawk)
gawk:模式扫描和处理语言
每读入一行,处理一行,处理各种文本信息,接受标准输入,可跟文件 和 程 序
自动切割处理的行,以空格符为准,支持数字运算awk运算速度更快 可用time 查询
只要不是变量的字符需要表示原译需要双引号
还有三种语句块使用,针对处理前,处理,处理后
定义变量,所有变量先声明在使用
其会
awk语言
基本格式:awk【选项】‘程序’文件
程分分两个部分pattern和action
-
pattern决定动作语句何时触发及触发事件 如BEGIN在执行前执行,不加此位未标记位当处理内容,END处理结束后在执行
-
action statements对数据进行处理,放在{}内指明
默认 空格符为 分隔符 ,可直接调用
awk常见用法
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
awk [options] ‘BEGIN{action;… }pattern{action;… }END{action;… }’ file …
awk变量
变量:内置和自定义变量
- FS:输入字段分隔符,默认为空白字符
awk -v FS=’:’ '{print $1,FS,$3}’ /etc/passwd awk –F: '{print $1,$3,$7}’ /etc/passwd - OFS:输出字段分隔符,默认为空白字符
awk -v FS=‘:’ -v OFS=‘:’ ‘{print $1,$3,$7}’ /etc/passwd RS:输入记录分隔符,指定输入时的换行符 awk -v RS=’ ’ ‘{print }’ /etc/passwd - ORS:输出记录分隔符,输出时用指定符号代替换行符
awk -v RS=’ ’ -v ORS=’###’‘{print }’ /etc/passwd - NF:字段数量
awk -F:‘{print NF}’ /etc/fstab 引用变量时,变量前不需加$ awk -F:‘{print $(NF-1)}’ /etc/passwd - NR:记录号
awk ‘{print NR}’ /etc/fstab ; awk END‘{print NR}’ /etc/fstab - FNR:各文件分别计数,记录号
awk ‘{print FNR}’ /etc/fstab /etc/inittab - FILENAME:当前文件名
awk '{print FILENAME}’ /etc/fstab - ARGC:命令行参数的个数
awk '{print ARGC}’ /etc/fstab /etc/inittab awk ‘BEGIN {print ARGC}’ /etc/fstab /etc/inittab - ARGV:数组,保存的是命令行所给定的各参数
awk ‘BEGIN {print ARGV[0]}’ /etc/fstab /etc/inittab awk ‘BEGIN {print ARGV[1]}’ /etc/fstab /etc/inittab