精选文章 awk记录-1

awk记录-1

作者:海德堡绝尘 时间: 2021-02-05 08:51:30
海德堡绝尘 2021-02-05 08:51:30
【摘要】a. 准备工作 marks.txt 本文件有4列
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
marks2.txt 本文件有部分列有5列
1) Andy Physics 80
2) Jacky Maths 90 10
3) Hill Biolog...

a. 准备工作 marks.txt 本文件有4列

1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

marks2.txt 本文件有部分列有5列

1) Andy Physics 80
2) Jacky Maths 90 10
3) Hill Biology 87
4) John English 85 12
5) Mary History

b. 样例

  • (1).文本加标题行 "序号 姓名 科目 分数" 显示:
    >awk 'BEGIN {printf "序号\t姓名\t科目\t分数\n"} {print}' marks.txt 
    序号  姓名  科目  分数
    1) Amit Physics 80
    2) Rahul Maths 90
    3) Shyam Biology 87
    4) Kedar English 85
    5) Hari History 89
  • (2).执行awk脚本:将单引号内的脚本写到一个文件,然后通过 -f 引用文件执行:
    
    > cat command.awk 
    BEGIN {printf "序号\t姓名\t科目\t分数\n"} {print}

awk -f command.awk marks.txt
序号 姓名 科目 分数
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

- (3). `-v`声明一个变量的值,BEGIN前分配 

awk -v user=root 'BEGIN{printf "name=%s\n", user}' `
name=root

- (4).  计算:   + - * / %

awk 'BEGIN {a=52; b=50; print "a%b=", (a%b)}' `
a%b= 2

- (5).  BEGIN END 定义变量a,在处理行的过程中增加(可以与行内的内容进行计算),END时输出:(计算总分数)

awk 'BEGIN { sumScore = 0; printf "总分数sumScore = %d\n", a } {sumScore=sumScore+$NF;print} END{print ">总分数sumScore=",sumScore}' marks.txt`
总分数sumScore = 0
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
总分数sumScore= 431


![疲劳的分割线](http://upload-images.jianshu.io/upload_images/3858200-38e21a294ccf66ce.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

awk内置变量: NR FNR NF

NR = Number of Records
NF = Number of Fields
FNR = File Number of Records
下面摘自: The GNU Awk User’s Guide

awk divides the input for your program into records and fields. It keeps track of the number of records that have been read so far from the current input file. This value is stored in a predefined variable called FNR, which is reset to zero every time a new file is started. Another predefined variable, NR, records the total number of input records read so far from all data files. It starts at zero, but is never automatically reset to zero.
......
The value of the built-in variable NF is the number of fields in the current record.

翻译与小结
awk将程序的输入分为记录和字段。
它跟踪从当前输入文件到目前为止已经读取的记录数量。

FNR 该值存储在一个名为FNR的预定义变量中,每启动一个新文件时,该变量将重置为零。【每行的行号-单个文件

NR 另一个预定义变量NR记录从所有数据文件中读取的输入记录总数。 它从零开始,但 从不 自动重置为零。【每行的行号-全部文件

NF 内置变量NF的值是当前记录中的字段数。在执行块中$NF可以得到当前行末字段的值

  • (6). 打印全局行号 当前行号 行内列数 行末字段值
    
    > awk 'BEGIN{print "全局行号\t当前行号\t行内列数\t行末字段值"} {print NR,"\t", FNR,"\t", NF,"\t", $NF}' marks.txt marks2.txt

全局行号 当前行号 行内列数 行末字段值
1 1 4 80
2 2 4 90
3 3 4 87
4 4 4 85
5 5 4 89
6 1 4 80
7 2 5 10
8 3 4 87
9 4 5 12
10 5 3 History


![疲劳分割线](http://upload-images.jianshu.io/upload_images/3858200-1ff80eb81fe3ad88.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:解决stackoverflow无法登陆问题

下一篇:rsync+inotify实现文件实时同步-步骤详解

您可能感兴趣

  • RFC34 关于ARC时钟的一些初步记录摘要

    组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:王翌(mcsewang mcsewang@21cn.com) 译文发布时间:2001-6-10 版权:本中文翻译文档...

  • 编写Handler满足日志记录的特殊需求

    Sun公司推出的JDK1.4版本在java.util.日志Logging软件包中新增加了处理应用程序日志工作的核心API函数。这个Java日志软件包提供了一种为Java应用程序嵌入多级日志的简单而又灵活的方法。 日志Logging软件包 为了利用日志软件包,你只需获得一个Logger对象并调用Logger中多个记录方法中的某一个,例如info(String message)。日志记录器Log...

  • 超高效提升水晶报表性能之下推记录选定 - 示例

    本示例展示编写可以下推到数据库服务器的记录选定公式的好处。 在 Xtreme 示例数据库的订单表中,有 2192 条记录,其中订单日期在 2001 年以前的有 181 条。假设您只想对这些记录制表。一方面,可以使用下面的记录选定公式: Year ({订单.订单日期}) < 2001 生成的 SQL 查询会将 2192 条记录全部发送至 Crystal Reports,然后记录选定公式将其减少...

  • 编写高效记录选定公式的策略

    注意:    本节假定您熟悉“选择专家”,并正从 SQL 数据库制作报表。 创建记录选定公式时请考虑以下几点: 考虑 1任何完全用“选择专家”生成、而不是自己编写的记录选定公式,都可以下推。 这种情况实际上的根据在于以下几点。但是,使用下面的提示可以编写的记录选定公式类型要比用“选择专家”编写的公式多。要做到这一点,您需要直接用公式工作室编辑记录选定公式,或者在单击“选择专家”中的“显示公式...

  • 怎样向SQL Server插入带有Image字段的记录

    怎样向SQL Server插入带有Image字段的记录    向SQL Server插入记录相信大家都会做,但是如果表中带有Image字段就不好弄了,这里有一个例子,非常安全,同时也向大家展示动态生成控件的技巧(对高手来说班门弄斧了)procedure Button1Click(Sender:TObject);var   Query : TQuery;  StringStream : TSt...

  • 运行时把ADO记录集对象Rs中的记录绑定到数据报表(DataReport)

    数据报表(DataReport)是一个报表帛作工具,通过拖放数据环境(Environment)窗体外的字段可以很容易的生成一个复杂的报表。但是有时能更想直接把数据报表(DataReport)联接到一个ActiveX数据对象(ADO)记录集而不是数据环境中。例如,也许已经用ADO生成一个分层查询,或者也许有一个从事物处理对象中获取记录集的n层应用。 那么怎么样才能直接将ADO记录集Rs绑定到数...

  • 在Delphi中如何把数据库中的记录引到word中

    在Delphi中如何把数据库中的记录引到word中 编号:QA004684建立日期: 2003年5月18日 最后修改日期:2003年5月20日 所属类别: Delphi - Office开发Delphi - 数据库pq:     我用的系统是win2000,delphi是6.0版本,word2000     请教:在delphi中要把数据库中的记录引到word中,建成表格的形式,要在w...

  • linux下c语言编程获得mx记录

    linux下c语言编程获得mx记录   /****************************************************************** *本文首发于bbs.bluegem.org的linux区 *本人email:chenfei@sohu.com *如转载本文,请保留首发地和本人联络方式,以方便交流,谢谢! ***********************...

51CTO

51CTO

51CTO是一家综合的IT技术用户服务平台,立足满足用户多维度需求,为技术用户成长赋能。2005年成立至今,拥有专业主流技术媒体51CTO企业信息化媒体CIOAge中国最大的IT在线教育平台51CTO学院。

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
awk记录-1介绍:华为云为您免费提供awk记录-1在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多awk记录-1的相关内容。| 移动地址: awk记录-1 | 写博客