awk编程基本使用示例

对于每一行,如果第三列大于0,则打印第一列,第二列*第三列的值
awk `$3>0 {print $1,$2*$3}` file1 file2
-f指定执行程序的文件
awk -f programfile inputfile  

打印整行输入
awk `{print}` 或者 awk `{print $0}`

NR当前行数,NF当前行的列数,下面这个 是打印当前行的列数,第一列和最后一列
awk `{print NR, NF, $1, $NF}`

格式化输出,跟c语言格式化类似
awk `printf("%-8s %.2f", $1,$2*$3)`

排序
awk `$3>0 {print $1,$2*$3}` file1 file2 | sort

计算后再选择
awk `$3 * $2>50 {print $1,$2*$3}` file1 file2
awk `$1=="suite" {print $1,$2*$3}` file1 file2
awk `!($NF>5 || $NF < 2)" {print $1,$2*$3}` file1 file2 

BEGIN 和 END BEGIN在处理输入前先执行BEGIN语句块
awk `BEGIN{print " name  rate number:"}{print}`
统计第三列大于50的总数,在处理完输入之后最后输入第三列大于50的总数
awk `$3>50{$emp=$emp+1} END{print $emp}`

字符串拼接
awk `{$name=$name $1 " "} END {print $name}`

内置函数length
awk `{print $1, length($1)}`

if-else
awk `$2>10{$n=$n+1,$pay=$2*3} END{if($n>0) print n else print "no"}`

while语句
awk `i=1 while(i<$3){printf("%s",$3) i=i+1}`

for
awk `{for(i=1;i<$3;i=i+1)printf("%s",$3)}`

arrays
逆序打印
awk `{line[NR]=$0} END {i=NR while(i>0){print line[i] i=i-1}}`

字段分隔符
awk `BEGIN{FS="\t"}{printf("$s %s",$1,$2) $cnt=$cnt+$2}END{print $cnt}`

正则匹配
$2包含字符串asia
awk `$2  ~ /asia/ print $3`
$2没有包含字符串asia
awk `$2  !~ /asia/ print $3`

内置变量
FNR 需要读入的行数 FILENAME 读入的文件名

赋值到字段中
awk `BEGIN{FS=OFS="\t"} $2=="aaa" {$4="bbb"} $2=="ccc" {$4="ddd"}{print}`

内置数学函数
atan2(y,x) cos(x) exp(x) int(x) log(x) rand(x) sin(x) sqrt(x) srand(x)

string内置函数
gsub(r,s) gsub(r,s,t) index(s,t) length(s) match(s,r) split(s,a) split(s,a,fs) sprinf() sub(r,s) substr(s,p)

do statement while(expr)
break continue
next exit

delete函数
for(i in pop)
  delete pop[i]

多维数组
pop[i,j]
if((i,j) in arr) ...
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值