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

Posted 龙少。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于shell案例分享之根据需求打印输出列表内容-AWK的简单应用!的主要内容,如果未能解决你的问题,请参考以下文章

Shell之企业实际工作案例

案例分享:Qt政务标签设计器,标签排版软件定制与打印

Linux系统shell脚本之打印系统的IP信息

Shell常用命令之printf

shell法宝之sed,修改文件内容的好帮手

EBS FORM功能调整案例