可以做任务的网站,不用登录的游戏,商业策划,亚网站建设引言 当我们揭开 Awk 功能部分时#xff0c;我们将介绍 Awk 中内置变量的概念。您可以在 Awk 中使用两种类型的变量#xff1a;用户定义的变量和内置变量。 内置变量的值已经在 Awk 中定义#xff0c;但我们也可以仔细更改这些值#xff0c;内置变量包括#xff1a; FILEN… 引言 当我们揭开 Awk 功能部分时我们将介绍 Awk 中内置变量的概念。您可以在 Awk 中使用两种类型的变量用户定义的变量和内置变量。 内置变量的值已经在 Awk 中定义但我们也可以仔细更改这些值内置变量包括 FILENAME 当前输入文件名不要更改变量名 FR 当前输入行号即输入行1、2、3……以此类推不要更改变量名 NF 当前输入行中的字段数不要更改变量名称 OFS 输出字段分隔符 FS 输入字段分隔符 ORS输出记录分隔符 RS : 输入记录分隔符 实战 让我们继续说明上面一些 Awk 内置变量的使用 要读取当前输入文件的文件名可以使用 FILENAME 内置变量如下所示 awk { print FILENAME } ~/domains.txt 您将意识到每个输入行都会打印出文件名这是当您使用 FILENAME 内置变量时 Awk 的默认行为。 使用 NR 来计算输入文件中的行记录数请记住它还会计算空行正如我们将在下面的示例中看到的那样。 当我们使用cat命令查看domains.txt文件时它包含14行文本和2行空 cat ~/domains.txt awk END { print Number of records in file is: , NR } ~/domains.txt 要计算记录或行中的字段数我们使用 NR 内置变量如下所示 cat ~/names.txt awk { print Record:,NR,has,NF,fields ; } ~/names.txt 接下来您还可以使用 FS 内置变量指定输入字段分隔符它定义 Awk 如何将输入行划分为字段。 FS 的默认值是空格和制表符但我们可以将 FS 的值更改为任何字符以指示 Awk 相应地划分输入行。 有两种方法可以做到这一点 一种方法是使用 FS 内置变量 第二个是调用 -F Awk 选项 考虑Linux系统上的文件/etc/passwd该文件中的字段使用:字符分隔因此当我们想要过滤掉某些字段时我们可以将其指定为新的输入字段分隔符如下例所示 我们可以使用 -F 选项如下所示 awk -F: { print $1, $4 ;} /etc/passwd 或者我们还可以利用 FS 内置变量如下所示 awk BEGIN { FS“:” ; } { print $1, $4 ; } /etc/passwd 要指定输出字段分隔符请使用 OFS 内置变量它定义如何使用我们使用的字符分隔输出字段如下例所示 awk -F: BEGIN { OFS ;} { print $1, $4 ;} /etc/passwd 在本文中我们探讨了使用带有预定义值的 Awk 内置变量的想法。但是我们也可以更改这些值不过不建议这样做除非您知道自己在做什么并且有足够的理解。 本文由 mdnice 多平台发布