awk命令是一个行处理命令,每次读取一行,然后进行处理,可以一次处理多个文件
awk命令格式:
awk [-F|-f|-v] ‘BEGIN{} {command1; command2} END{}’ file1 file2 ...
分割符:-F: , -F ':',-F '[.,/]' 三种方式都可以
awk命令内置变量:
- $n:一行的第n个字段
- $0:一行的全部内容
- ARGC:命令行的参数个数
- ARGV:命令行参数的数组
- CONVFMT:数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
- ERRNO:最后一个系统错误的描述
- FIELDWIDTHS:字段宽度列表(用空格键分隔)
- FILENAME:文件名
- FNR :各文件分别计数的行号
- FS:字段分隔符(默认是任何空格)
- IGNORECASE:忽略大小写的匹配
- NF:字段个数
- NR:处理的行数
- OFMT:数字的输出格式(默认值是%.6g)
- OFS :字段输出分隔符
- ORS:行输出分隔符
- RLENGTH:由match函数所匹配的字符串的长度
- RS:记录分隔符(默认是一个换行符)
- RSTART:由match函数所匹配的字符串的第一个位置
- SUBSEP:数组下标分隔符(默认值是/034)
输出第一行
awk '{if(NR==1) {print $0}}' test.txt
输出最后一行
awk 'END{print }' test.txt
逆序输出行
将每一行都存入一个关联数组中,用行号作为数组索引(行号由NR给出)
awk '{line_info[NR]=$0} END{for(i=NR;i>0;i--){print line_info[i]}}' test.txt