专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
伯乐在线  ·  吵翻了!苹果“液态玻璃”被指像 17 ... ·  3 小时前  
伯乐在线  ·  吵翻了!苹果“液态玻璃”被指像 17 ... ·  3 小时前  
蚂蚁技术AntTech  ·  论文秀Live#21 ICSE 2025 ... ·  2 天前  
程序员的那些事  ·  阿里云核心域名竟遭劫持,博客园等众多网站瘫痪 ... ·  2 天前  
伯乐在线  ·  周鸿祎:准备干掉 360 整个市场部! ·  2 天前  
伯乐在线  ·  周鸿祎:准备干掉 360 整个市场部! ·  2 天前  
51好读  ›  专栏  ›  OSC开源社区

三十分钟学会 AWK

OSC开源社区  · 公众号  · 程序员  · 2016-11-02 08:33

正文

请到「今天看啥」查看全文


--dump-variables[=file] 选项

该选项会输出排好序的全局变量列表和它们最终的值到文件中,默认的文件是 awkvars.out。


--help 选项

打印帮助信息。


--lint[=fatal] 选项

该选项允许检查程序的不兼容性或者模棱两可的代码,当提供参数 fatal的时候,它会对待Warning消息作为Error。


--posix 选项

该选项开启严格的POSIX兼容。

--profile[=file]选项

该选项会输出一份格式化之后的程序到文件中,默认文件是 awkprof.out。


--traditional 选项

该选项会禁止所有的gawk规范的扩展。

--version 选项

输出版本号



基本使用示例


本部分会讲述一些有用的AWK命令和它们的使用示例,所有的例子都是以下面的文本文件 marks.txt 为基础的


打印某列或者字段

AWK可以只打印输入字段中的某些列。


在文件marks.txt中,第三列包含了科目名,第四列则是得分,上面的例子中,我们只打印出了这两列,$3 和 $4代表了输入记录中的第三和第四个字段。

打印所有的行

默认情况下,AWK会打印出所有匹配模式的行


上述命令会判断每一行中是否包含a,如果包含则打印该行,如果BODY部分缺失则默认会执行打印,因此,上述命令和下面这个是等价的

打印匹配模式的列

当模式匹配成功时,默认情况下AWK会打印该行,但是也可以让它只打印指定的字段。例如,下面的例子中,只会打印出匹配模式的第三和第四个字段。


任意顺序打印列


统计匹配模式的行数


打印超过18个字符的行



内建变量


AWK提供了很多内置的变量,它们在开发AWK脚本的过程中起着非常重要的角色。

标准AWK变量

ARGC 命令行参数个数

命令行中提供的参数个数


ARGV 命令行参数数组

存储命令行参数的数组,索引范围从0 - ARGC - 1。


CONVFMT 数字的约定格式

代表了数字的约定格式,默认值是%.6g


ENVIRON 环境变量

环境变量的关联数组


FILENAME 当前文件名


FS 输入字段的分隔符

代表了输入字段的分隔符,默认值为空格,可以通过-F选项在命令行选项中修改它。


NF 字段数目

代表了当前行中的字段数目,例如下面例子打印出了包含大于两个字段的行


NR 行号


FNR 行号(相对当前文件)

与NR相似,不过在处理多文件时更有用,获取的行号相对于当前文件。

OFMT 输出格式数字

默认值为%.6g


OFS 输出字段分隔符

输出字段分隔符,默认为空格


ORS 输出行分隔符

默认值为换行符


RLENGTH

代表了 match 函数匹配的字符串长度。


RS 输入记录分隔符


RSTART

match函数匹配的第一次出现位置


SUBSEP 数组子脚本的分隔符

数组子脚本的分隔符,默认为\034


$ 0 代表了当前行

代表了当前行


$n







请到「今天看啥」查看全文