shell案例分享之根据需求打印输出列表内容-AWK的简单应用!

需求如下内容

以下分别是每个人的语文,数学,英语,历史4个科目的成绩,汇总每个人的总分和计算各科的平均分以列表的形式打印输出内容

[root@server ~]# cat /opt/test.txt
张三 90 72 63 89;李四 95 100 87 88;王五 78 66 82 90;赵六 77 88 99 65;田七 89 66 95 72

实现具体步骤如下

[root@server opt]# cat test.txt
张三 90 72 63 89;李四 95 100 87 88;王五 78 66 82 90;赵六 77 88 99 65;田七 89 66 95 72
[root@server opt]# awk 'BEGIN{RS=";"}{print}' test.txt
张三 90 72 63 89
李四 95 100 87 88
王五 78 66 82 90
赵六 77 88 99 65
田七 89 66 95 72

[root@server opt]# awk 'BEGIN{RS=";"}{print $1}' test.txt
张三
李四
王五
赵六
田七
[root@server opt]# awk 'BEGIN{RS=";"}{print $1 $2}' test.txt
张三90
李四95
王五78
赵六77
田七89

[root@server opt]# awk 'BEGIN{RS=";"}{print $1"\t" $2}' test.txt
张三    90
李四    95
王五    78
赵六    77
田七    89

[root@server opt]# awk 'BEGIN{RS=";"}{print $1"\t"$2"\t"$3"\t"$4"\t"$5}' test.txt
张三    90      72      63      89
李四    95      100     87      88
王五    78      66      82      90
赵六    77      88      99      65
田七    89      66      95      72
[root@server opt]# awk 'BEGIN{RS=";";print "姓名\t""语文\t""数学\t""英语\t""历史\t"}{print $1"\t"$2"\t"$3"\t"$4"\t"$5}' test.txt
姓名    语文    数学    英语    历史
张三    90      72      63      89
李四    95      100     87      88
王五    78      66      82      90
赵六    77      88      99      65
田七    89      66      95      72

[root@server opt]# awk 'BEGIN{RS=";";print "姓名\t""语文\t""数学\t""英语\t""历史\t""个人总成绩"}{print $1"\t"$2"\t"$3"\t"$4"\t"$5}' test.txt
姓名    语文    数学    英语    历史    个人总成绩
张三    90      72      63      89
李四    95      100     87      88
王五    78      66      82      90
赵六    77      88      99      65
田七    89      66      95      72

[root@server opt]# awk 'BEGIN{RS=";";print "姓名\t""语文\t""数学\t""英语\t""历史\t""个人总成绩"}{sum=$2+$3+$4+$5;yu+=$2;shu+=$3;yin+=$4;li+=$5;print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"sum}' test.txt
姓名    语文    数学    英语    历史    个人总成绩
张三    90      72      63      89      314
李四    95      100     87      88      370
王五    78      66      82      90      316
赵六    77      88      99      65      329
田七    89      66      95      72      322

[root@server opt]# awk 'BEGIN{RS=";";print "姓名\t""语文\t""数学\t""英语\t""历史\t""个人总成绩"}{sum=$2+$3+$4+$5;yu+=$2;shu+=$3;yin+=$4;li+=$5;print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"sum}END{print"平均分\t"yu/NR"\t"shu/NR"\t"yin/NR"\t"li/NR"\t"}' test.txt
姓名    语文    数学    英语    历史    个人总成绩
张三    90      72      63      89      314
李四    95      100     87      88      370
王五    78      66      82      90      316
赵六    77      88      99      65      329
田七    89      66      95      72      322
平均分  85.8    78.4    85.2    80.8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值