文本处理工具awk
awk是基于列的文本处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出各字段的值。
awk认为文件是结构化的,也就是说都是由单词和各种空白字符组成的,这里的“空白字符”包括空格、Tab,以及连续的空格和Tab等。每个非空白的部分叫做“域”,从左到右依次是第一个域、第二个域、第三个域,等。$1、$2分别表示域,$0则表示全部域。
打印指定域
#awk '{print $1,$2}' file.txt //file.txt为测试文件,数据自填
指定打印分隔符
- 默认情况下awk使用空白符作为分隔符
- -F 参数指定分隔符
awk -F / '{priint $1,$2}' file.txt
内部变量NF
- 获取文件的列数
- awk ‘{print NF}’ file.txt
打印固定域
- 打印最后一列
- awk ‘{print $NF}’ file.txt
截取字符串
- substr(指定域,第一个开始字符的位置,第二个结束的位置)
- 其中第二个结束的位置可以为空,默认输出到该域的最后一个字符
- cat file.txt | awk ‘{print substr($1,2,4)}’
确定字符串的长度
- cat flie.txt | awk ‘{print length}’
求列和
- 求和
- cat file.txt | awk ‘BEGIN{total=0}{total+=$3}END{print total}’
- 求平均
- cat file.txt | awk ‘BEGIN{total=0}{total+=$3}END{print total/NR}’