|
GNU awk:
文本处理三工具:grep, sed, awk
grep,egrep,fgrep:文本过滤工具:pattern
sed:行编辑器
模式空间、保持空间
awk:报告生成器,格式化文本输出;
gawk: pattern scanning and processing language
基本用法:gawk [options] 'program' FILE ...
program: PATTERN{ACTION STATEMENTS}
语句之间用分号分隔
print, printf
选项:
-F:致命输入时用到的字段分隔符;
-v var=value: 自定义变量
1.print
print item1, item2, ...
要点:
1.逗号分隔符;
2.输出的各item可以是字符串,可以是数值;当前记录的字段、变量或awk的表达式
3.如省略item,相当于print $0
2.变量
2.1.内建变量
FS:input field seperator,默认是空白字符
OFS:output field seperator,默认是空白字符;
RS:input record seperator,输入时的换行符;
ORS:output record seperator,输出时的换行符;
NF:number of fied, 字段数量
{print NF}, {print $NF}
NR:number fo record,行数;
FNR:各文件分别计数,行数;
ARGC:命令行参数的个数;
ARGV:数组,保存的是命令行所给定的各参数
2.2自定义变量
1. -v var=value
变量名区分字符大小写
2.在program中直接定义
3.printf命令
格式化输出:printf FORMA, item1, item2, ...
1.format 必须给出;
2.不会自动换行,需要显示给出换行控制符,\n
3.format中需要分别为后面的每个item指定一个格式化符号;
格式符:
%c:显示字符的ASCII码
%d,%i:显示十进制整数
%e,%E:科学计数法数值显示
%f:显示为浮点数
%g,%G:以科学计数法或浮点形式显示数值;
%s:显示字符串;
%u:无符号整数
%%:显示%自身
修饰符:
#[.#]:第一个#控制显示的宽度;第二个#表示小数点后的精度;
%3.1f
-:左对齐
+:显示数值的符号
4.操作符
基本操作符:
x+y, x-y, x*y, x/y, x^y, x%y
-x
+x:转换为数值
字符串操作符,没有符号的操作符,字符串连接
赋值操作符:
=,+=,-=,*=,/=,%=,^=,
++,--
比较操作符:
>,>=,<,<=,!=,==
模式匹配符:
~:是否匹配
!~:是否吧匹配
逻辑操作符:
&&
||
!
函数调用:
function_name(arg1, arg2, ...)
条件表达式:
selection?true-expression:false-expression
awk -F: '{$3>=1000?usertype="Common User":usertype="Sysadmin or SysUser";printf "%15s:%-s\n",$1,usertype}' /etc/passwd
|
|
|