参考:http://www.runoob.com/linux/linux-comm-awk.html
awk命令的标准格式
awk '{}'
1.取出文档中的某一列
#取出new.id.txt中的第1列和第4列,并且两列用空格隔开
awk '{print $1,$4}' new.id.txt
2.指定分隔符
#使用逗号分隔
awk -F, '{print $1,$2}' new.id.txt
#使用多个符号进行分隔(如先使用空格分开,再使用逗号分开)
awk -F '[ ,]' '{print $1,$2,$5}' new.id.txt
3.算法运用
(1)数据过滤
#过滤出第1列大于2的行
awk '$1>2' new.id.txt
#过滤第一列等于2的行,并输出第一列等于2的行的第1列和第3列
awk '$1==2 {print $1,$3}' new.id.txt
#过滤第一列大于2并且第二列等于'love'的行,再输出前面条件满足的行的前3列
awk '$1>2 && $2=="love" {print $1,$2,$3}' new.id.txt
注:常用符号
> 大于
== 等于
&& 短路与(前一条件不满足,就不会执行后一条件;前一条件满足,就会再执行后一条件)
#过滤出长度大于80的行
awk 'length>80' new.id.txt
(2)数据运算
#将new.id.txt中的第一列相加
awk '{print $1}' new.id.txt | paste -s -d + | bc
4.awk选中列,再用sed替换
#取出第2列,并且将按分号分隔转换为按空格分隔
awk '{print $2}' new.id.txt | sed 's/;/\t/g'
\t 表示空格
\n 表示换行符
5.字符串匹配
#输出第二列包含 "spider"的行,并打印其第二列与第四列
awk '$2 ~ /spider/ {print $2,$4}' new.id.txt
~ /example/ 匹配example这一字符
#输出包含“spider”的行
awk '/spider/ ' new.id.txt
6.模板取反
awk '$2 !~ /spider/ {print $2,$4}' new.id.txt
!~ /spider/ 不取包含“spider”字段的行