资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

怎么使用awk内置变量

这篇文章给大家分享的是有关怎么使用awk内置变量的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联建站-专业网站定制、快速模板网站建设、高性价比曾都网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式曾都网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖曾都地区。费用合理售后完善,10多年实体公司更值得信赖。

我们将逐渐揭开 awk 功能的神秘面纱,在本节中,我们将介绍 awk 内置built-in变量的概念。你可以在 awk  中使用两种类型的变量,它们是:用户自定义user-defined变量和内置变量。

awk 内置变量已经有预先定义的值了,但我们也可以谨慎地修改这些值,awk 内置变量包括:

  • FILENAME : 当前输入文件名称

  • NR : 当前输入行编号(是指输入行 1,2,3……等)

  • NF : 当前输入行的字段编号

  • OFS : 输出字段分隔符

  • FS : 输入字段分隔符

  • ORS : 输出记录分隔符

  • RS : 输入记录分隔符

让我们继续演示一些使用上述 awk 内置变量的方法:

想要读取当前输入文件的名称,你可以使用 FILENAME 内置变量,如下:

$ awk ' { print FILENAME } ' ~/domains.txt

怎么使用awk内置变量

 awk FILENAME 变量

你会看到,每一行都会对应输出一次文件名,那是你使用 FILENAME 内置变量时 awk 默认的行为。

我们可以使用 NR 来统计一个输入文件的行数(记录),谨记,它也会计算空行,正如我们将要在下面的例子中看到的那样。

当我们使用 cat 命令查看文件 domains.txt 时,会发现它有 14 行文本和 2 个空行:

$ cat ~/domains.txt

怎么使用awk内置变量

 输出文件内容

$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt

怎么使用awk内置变量

 awk 统计行数

想要统计一条记录或一行中的字段数,我们可以像下面那样使用 NR 内置变量:

$ cat ~/names.txt

怎么使用awk内置变量

 列出文件内容

$ awk '{ "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

 怎么使用awk内置变量

awk 统计文件中的字段数

接下来,你也可以使用 FS 内置变量指定一个输入文件分隔符,它会定义 awk 如何将输入行划分成字段。

FS 默认值为“空格”和“制表符”,但我们也能将 FS 值修改为任何字符来让 awk 根据情况切分输入行。

有两种方法可以达到目的:

  • ***种方法是使用 FS 内置变量

  • 第二种方法是使用 awk 的 -F 选项

来看 Linux 系统上的 /etc/passwd 文件,该文件中的各字段是使用 : 分隔的,因此,当我们想要过滤出某些字段时,可以将:  指定为新的输入字段分隔符,示例如下:

我们可以使用 -F 选项,如下:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

怎么使用awk内置变量

 awk 过滤密码文件中的各字段

此外,我们也可以利用 FS 内置变量,如下:

$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd

怎么使用awk内置变量

 使用 awk 过滤文件中的各字段

使用 OFS 内置变量来指定一个用于输出的字段分隔符,它会定义如何使用指定的字符分隔输出字段,示例如下:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

怎么使用awk内置变量

 向文件中的字段添加分隔符

感谢各位的阅读!关于“怎么使用awk内置变量”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


本文名称:怎么使用awk内置变量
网页路径:http://cdkjz.cn/article/psoepo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220