linux awk实例,linux awk使用实例

说明:利用awk实现相似于数据库group by功能;html

文本以下:

#学号 科目 成绩

1 chinese 90

1 math 40

1 EngLish 59

2 chinese 95

2 math 80

2 EngLish 52

3 chinese 89

4 math 29web

(1)按照学号统计每一个学号的总成绩

cat file.txt | grep -v “#” | awk ‘{H[$1]+=$3}END{for (i in H){printf("%s,%d\n",i,H[i])}}’ | sort

统计结果:

1,189

2,227

3,89

4,29数据库

(2)捞取文件中指定科目的总成绩

sub.cfg–

chinese

mathapp

cat file.txt | awk -v cfg=sub.cfg 'BEGIN{

#此处从sub.cfg配置文件中读取数据,构建hash

while(getline val < sub.cfg)

{

H[val]=sprintf("OK");

}

}

{

#读取当前file.txt文件,

if(H[$2]=="OK")

S[$2]+=$3;

}END{

for(i in S)

{

printf("%s,%d\n",i,S[i]);

}

}'

统计结果:

chinese,274

math,149

#!/bin/shsvg

file=$1

cfgfile=$2

timecfg="./time_dict.cfg"spa

flag=echo $file | awk -F "_" '{print $1}'

cat f

i

l

e

a

w

k

F

"

,

"

v

c

f

g

=

file | awk -F "," -v cfg=file∣awk−F","−vcfg=cfgfile -v tim=$timecfg 'BEGIN{

tnum=0;

anum=0;

while(getline t < tim)

{

T[tnum]=t;

tnum++;

}

while(getline add < cfg)

{

A[anum]=add;

anum++;

}

for(i=0; i

{

for(j=0; j

{

key=sprintf("%s,%s",T[i],A[j]);

K[key]=0;

L[key]=T[i];

M[key]=A[j];

}

}

}

{

tmpkey=sprintf("%s,%s",$1,$3);

if(K[tmpkey] == 0)

{

K[tmpkey] = 1;

}

print KaTeX parse error: Expected 'EOF', got '}' at position 5: 0 }̲END{ for(k i…{flag}_2.csvcode

awk实现排序

file:4.txt

110,4|1,16

110,5|1,12

110,6|1,11

110,2|1,103

110,1|1,10

110,1|2,101

110,3|1,103

112,3|1,103

112,4|1,16

112,6|1,11

112,5|1,12

112,1|1,10

112,1|2,101

112,2|1,103

113,1|1,30

104,2|1,34orm

516e463adbc9cd30ef69ab2e4deb4b8c.png

输出结果:

110,4|1,16

110,5|1,12

110,6|1,11

110,2|1,103

110,1|1,10

110,1|2,101

110,3|1,103

112,3|1,103

112,4|1,16

112,6|1,11

112,5|1,12

112,1|1,10

112,1|2,101

112,2|1,103

113,1|1,30

104,2|1,34xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值