Linux下AWK使用练习

环境

RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9

任务

下面的文本中包含名字、电话和为党派运动捐款的数额。

名字:电话:1月捐 款情况:2月捐款情况:3月捐款情况

Mike Harrington :(510) 548- 1278:250:100:175

Christian Dobbins:(408) 538-2358:155:90:201

Susan Dalsass:(206) 654-6279:250:60:50

Archie McNichol:(206) 548- 1348:250:100:175

Jody Savage: (206) 548-1278:15:188:150

Guy Quigley:(916) 343-6410:250: 100:175

Dan Savage:(406) 298- 7744:450:300:275

NancyMcNeil:(206) 548-1278:250:80:75

John Goldenrod:(916) 348-4278:250:100:175

Chet Main:(510) 548- 5258:50:95:135

Tom Savage:(408) 926-3456:250:168:200

Elizabeth Stachelin:(916) 440-1763:175:75:300

使用你能用到的任何linux命令脚本产 生一个如下的报告,注意,报告中的summery包含对于捐款情况的一些统计信息。

解决

#!/bin/bash
#filename:test.sh
sourcename=$1
echo "$sourcename"
sed -i "s/: /:/g" sourcename
echo "             ***FIRST QUARTERLY REPORT **** "
echo "            ***CAMPAIGN 2000 CONTRIBUTIONS ***"
echo "----------------------------------------------------------------

---"
echo "  NAME                   PHONE      JAN| Feb| Mar|   Total 

Danated "
echo "----------------------------------------------------------------

---"
awk -F: '{printf( "%-20s%12s%5d%5d%5d\t%

5d\n",$1,$2,$3,$4,$5,$3+$4+$5) } ' linux2.txt
echo "----------------------------------------------------------------

---"
echo "                       SUMMARY                                    

 "
echo "----------------------------------------------------------------

---"
awk -F: 'BEGIN{sum=0;total=0} {total=$3+$4+$5;sum+=total} END {
    printf("The campaign received a total of $%d for this 

quartor\n",sum)
    }' linux2.txt
awk -F: 'BEGIN{average=0;i=0;total=0;sum=0} 

{total=$3+$4+$5;sum+=total;i++}
    END {average=sum/i;printf("The average donation for the %d 

contributors was $%.2f.\n",i,average) }' linux2.txt
awk -F: 'BEGIN{highest=0;sum=0;total=0;name} {
    total=$3+$4+$5;if(total> highest) {highest=total;name=$1}} END { 

    printf("The highest total contribution was $%.2f made by %

s\n",highest,name) }' linux2.txt     

echo "                   ***THANKS Dan***                               

"
echo "The following people donated over \$500 to the campaign           

"
echo "They are eligible for the quarterly drawing!!                     

"
echo "Listed are their names (sorted by last names) and phone numbers:  

"
awk -F: 'BEGIN{ OFS="--";biaozhun=500;total=0} {
    $1="\t"$1;total=$3+$4+$5;if(total>biaozhun) print $1,$2 | "sort 

-k 2" }' linux2.txt
echo "      Thanks to all of you for your continued support!!       

"

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux
, printf
, linux - awk
, echo
, awk
, sum
, total
, 循环 捐款问题
, 250
错误916
,以便于您获取更多的相关知识。

时间: 2024-09-22 05:43:30

Linux下AWK使用练习的相关文章

linux下awk命令语法及使用实例教程

linux awk命令使用实例,awk是一种文本处理工具,在linux shell下尤为突出, 一个awk脚本通常由:BEGIN语句块.能够使用模式匹配的通用语句块.END语句块3部分组成,这三个部分是可选的.实例: awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file BEGIN语句块在awk开始从输入流中读取行之前被执行,这是一个可选的语句块,比如变量初始化.打印输出表格

Linux下awk内置变量使用介绍

我们将逐渐揭开 awk 功能的神秘面纱,在本节中,我们将介绍 awk 内置built-in变量的概念.你可以在 awk 中使用两种类型的变量,它们是:用户自定义user-defined变量和内置变量. 我们将逐渐揭开 awk 功能的神秘面纱,在本节中,我们将介绍 awk 内置built-in变量的概念.你可以在 awk 中使用两种类型的变量,它们是:用户自定义user-defined变量和内置变量.awk 内置变量已经有预先定义的值了,但我们也可以谨慎地修改这些值. awk 内置变量包括: FI

linux下awk 按模式筛选文本或字符串

作为 awk 命令系列的第三部分,这次我们将看一看如何基于用户定义的特定模式来筛选文本或字符串. 在筛选文本时,有时你可能想根据某个给定的条件或使用一个可被匹配的特定模式,去标记某个文件或数行字符串中的某几行.使用 awk 来完成这个任务是非常容易的,这也正是 awk 中可能对你有所帮助的几个功能之一. 让我们看一看下面这个例子,比方说你有一个写有你想要购买的食物的购物清单,其名称为 food_prices.list,它所含有的食物名称及相应的价格如下所示: $ cat food_prices.

linux下Awk简单过滤示例

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

Linux下使用脚本记录所有用户的操作

这个脚本是在网上找到的,稍微做了一些修改,可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并生成包含"用户/IP/时间"的文件存放在指定位置,方便管理员以后查看不同用户都在服务器上干了些什么! 目前这个代码只实现了记录用户的操作命令,但是像vi编辑只会记录vi这条命令,但是在文件里所修改的内容无法记录...有时间再研究一下! 将下面的代码追加到/etc/profile文件里即可 PS1="`whoami`@`hostname`:"

Linux下自动清理大量文件的方案探究

  定期清理过期文件和垃圾文件,维持文件系统合理的空间使用率,是一个系统管理员的日常工作.对于中小规模文件系统而言,简单的系统命令或者脚本都就可以实现;但是对于拥有数亿甚至数十亿数文件的大型.超大型文件系统,文件清理就变成一项艰巨的任务.如果确定哪些文件需要被清理,怎样清理大批量文件,怎样确保清理性能,都是系统管理员需要解决的难题.本文探讨了 Linux 下大批量文件自动清理的相关命令和方法,以及实际操作中的最佳实践. 文件自动清理的需求 系统管理员的手中,管理着企业最有价值的资产--数据;而占

php在linux下检测mysql同步状态的方法

 这篇文章主要介绍了php在linux下检测mysql同步状态的方法,是Linux下使用php检测mysql同步状态的实用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php在linux下检测mysql同步状态的方法.分享给大家供大家参考.具体分析如下: 这里通过两个实例来介绍mysql同步状态检测实现方法.代码如下: 代码如下: #!/bin/sh #check MySQL_Slave Status #crontab time 00:10 MYSQL_USER="ro

linux下perl,sed,shell批量替换文件内容

  方法1: 这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的url统一指定到nexus本地中央库. 手 工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法,命令结构如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'下面这个例子就是将当前目录

Linux下自动化监控内存、存储空间!

距离上一次更新文章已经过去一段时间了,小编在这段时间因为一些琐事,加上身体生病不能及时更新文章,今天身体逐渐恢复就急忙来更新文章,今天思梦给大家带来的就是如何自动化监控我们的服务器一些基本的配置来保证我们应用能更好的运行以及做好性能瓶颈的预测! 今天主要内容包含,Linux的基础Shell编程的流程控制语句.cut的使用.grep的使用.以及awk的使用就可以实现我们所说的事情了! 以下所讲命令配合不同的参数有不同的用处,思梦给大家讲的都是一些为了实现所说功能的基础使用,小伙伴们如果想更好的使用