awk记录-1

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
疲劳的分割线

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
疲劳分割线
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 1、Nginx日志分析日志格式:'$remote_addr - $remote_user [$time_local...
    运维前线阅读 699评论 0 4
  • Linux指令中文说明传送入口 整理自Linux指令中文说明 文本和数据进行处理的编程语言awk 是一种编程语言,...
    释闲人阅读 2,099评论 1 6
  • awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多...
    yeahuh阅读 3,929评论 0 7
  • Linux文本处理工具三剑客: grep:文本过滤器 sed:流编辑器 awk:报告生成器(格式化以后,显示) a...
    溺水的漂流瓶阅读 518评论 1 1
  • 1.会员注册 进入JYS网站http://www.jystzlc.com,点击右上角“注册”,会跳转入注册页面。 ...
    东成西就_49fa阅读 849评论 0 2