linux 文件行数变量,Linux下awk内置变量使用介绍

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

334722e6f72c4ab74fab76c15628039c.png

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

awk 内置变量包括:

FILENAME : 当前输入文件名称

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

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

OFS : 输出字段分隔符

FS : 输入字段分隔符

ORS : 输出记录分隔符

RS : 输入记录分隔符

FILENAME :

让我们继续演示一些使用上述 awk 内置变量的方法,想要读取当前输入文件的名称,你可以使用 FILENAME 内置变量,如下:$ awk ' { print FILENAME } ' ~/domains.txt

b72d114bea54b560aa8d27aff1d9c520.png

你会看到,每一行都会对应输出一次文件名,那是你使用 FILENAME 内置变量时 awk 默认的行为。我们可以使用 NR 来统计一个输入文件的行数(记录),谨记:它也会计算空行,正如我们将要在下面的例子中看到的那样。 输出文件内容 当我们使用 cat 命令查看文件 domains.txt 时,会发现它有 14 行文本和 2 个空行:$ cat ~/domains.txt

218ad67c5fe242e16e0a72e803ed7810.png

awk 统计行数:

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

4335ba381dc45d7e5003313965185c64.png

awk 统计文件中的字段数:

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

d1cd10ecf6638f31d8541588059818ea.png

FS 内置变量:

你也可以使用 FS 内置变量指定一个输入文件分隔符,它会定义 awk 如何将输入行划分成字段。FS 默认值为“空格”和“制表符”,但我们也能将 FS 值修改为任何字符来让 awk 根据情况切分输入行。有两种方法可以达到目的:***种方法是使用 FS 内置变量;第二种方法是使用 awk 的 -F 选项。来看 Linux 系统上的 /etc/passwd 文件,该文件中的各字段是使用 冒号(:) 分隔的,因此,当我们想要过滤出某些字段时,可以将冒号(:) 指定为新的输入字段分隔符, awk 过滤密码文件中的各字段 . 我们可以使用 -F 选项,如下:$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

85b275d74d2d94530ee8da1c26185f62.png

此外,我们也可以利用 FS 内置变量,如下:$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd

c620b962bcf6961941241726ca19ff75.png

使用 OFS 内置变量:

使用 OFS 内置变量来指定一个用于输出的字段分隔符,它会定义如何使用指定的字符分隔输出字 段 使用 awk输出的分隔符: $ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

3ea07f050799be8a146fa28d20846e28.png

在本节中,我们已经学习了使用含有预定义值的 awk 内置变量的理念。但我们也能够修改这些值,虽然并不推荐这样做,除非你明白自己在做什么,并且充分理解(这些变量值)。

此后,我们将继续学习如何在 awk 命令操作中使用 shell 变量,所以,请继续关注我们。

【编辑推荐】

【责任编辑:枯木 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值