基本用法
awk '{print $0}' aa.txt
#表示输出文件所有内容 $1,$2,$3…分别表示输出文件的前1,2,3列
awk '$2~123' aa.txt
#输出第二列匹配123的行,若要匹配字符串,则需要将字符串用双引号""括起来,如awk '$2~"hhh"' aa.txt
。注:此匹配将会匹配所有包含hhh的字符串,ahhha等也会被匹配成功。
awk -F: '{print $1}' aa.txt
# -F后面跟的是输入域分隔符,即按照:来分隔文件。
awk '{FS=":";OFS="#";print $1,$3}' aa.txt
#FS指定输入域分隔符,OFS指定输出域分隔符,中间以分号分开
awk还提供了字符串处理函数,如length可以求字符串的长度,例子如下
awk '{print length($1)}' aa.txt
#输出每一行的第一列的长度
awk 'BEGIN {print substr("707-456",1,3)}'
#返回字符串707-456的第1个到第3个字符组成个子字符串
awk '{print NF}' file
# 输出文件的列数
awk 还具有流程控制功能,如if,while,for等。如awk '{if($4>3000){print $0}}' aa.txt
#输出第4列大于3000的所有行。
解决特定问题的用法
-
删除空白行
awk '$0 !~ /^$/' a.txt
awk 'NF > 0' a.txt
-
匹配用法
awk '$1 ~ /[3-9]/' data
#要匹配的内容放在//之间,^代表开头,$代表结束,~代表匹配,!~代表不匹配 -
对某列求和
awk '{sum+=$1};END {print sum}' test.txt
#对第一列求和 -
根据文件最后一列的内容对文件进行排序
awk '{print $NF,$0}' file.txt | sort -nr | cut -d' ' -f2-
解释:首先将文件的最后一列内容添加到第一列,然后根据第一列进行排序,最后将第一列删掉