Linux | awk

参考: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”字段的行

你可能感兴趣的:(Linux | awk)