awk 命令的原理
一、awk的格式
awk [options] 'pattern {action}' file
awk指令是由模式、动作,或者模式和动作的组合组成,指令要加单引号。options即是参数,pattern既是模式,action既是动作。模式是查找的范围,动作是截取数据,动作要加大括号。如果没有模式就默认是范围是全部内容,如果没有动作就输出全部内容。
二、awk的执行
-F 指定分隔符,就是按照什么符号进行文件的切割。如果我们不指定-F参数,awk默认按照空格对文件进行切割,但是会把左右去掉空格取内容。如:awk -F "[ :]" 这就是制定以空格和冒号为分隔符。
print 是输出的意思,$代表取列,$1代表取第一列,$0默认输出全部内容,$NF代表取最后一列。
echo -e 可以处理换行符\n
sort 按26个字母排序,xi加-n按从小到大的数字排列,加-r逆转顺序进行排序,加-k指定那列,如sort -k2
unip 相近的进行去重,加-c去重的同时进行计数
tr 替换命令,如tr ":" "?"
awk的模式:
1、正则表达式
awk默认支持除了{}以外的所有正则表达式,加参数--posix可以识别{},前面加~表示匹配正则表达式,加!~表示与~相反的意思。
2、比较表达式
比较常用的就是大于、小于和等于,NR是awk读过的行的记录号,也相当于行号,如大于等于23即NR》=23
3、范围模式
4、特殊模式(BEGIN和END)
BEGIN模块就在awk读取文件之前执行,一般用来定义内置变量。在awk中变量一般从零开始。
awk -F: 'BEGIN{RS="\n";ORS="\"}{print $3}' test
RS是读入划行符,ORS是输出划行符
END模块就在awk读取所有文件的时候,再执行END模块,一般用来输出一个结果。
浙公网安备 33010602011771号