Linux|了解如何使用 awk 内置变量

引言

当我们揭开 Awk 功能部分时,我们将介绍 Awk 中内置变量的概念。您可以在 Awk 中使用两种类型的变量:用户定义的变量和内置变量。

alt

内置变量的值已经在 Awk 中定义,但我们也可以仔细更改这些值,内置变量包括:

  1. FILENAME :当前输入文件名(不要更改变量名)
  2. FR :当前输入行号(即输入行1、2、3……以此类推,不要更改变量名)
  3. NF :当前输入行中的字段数(不要更改变量名称)
  4. OFS :输出字段分隔符
  5. FS :输入字段分隔符
  6. ORS:输出记录分隔符
  7. RS : 输入记录分隔符

实战

让我们继续说明上面一些 Awk 内置变量的使用:

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

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

您将意识到,每个输入行都会打印出文件名,这是当您使用 FILENAME 内置变量时 Awk 的默认行为。

使用 NR 来计算输入文件中的行(记录)数,请记住,它还会计算空行,正如我们将在下面的示例中看到的那样。

当我们使用cat命令查看domains.txt文件时,它包含14行文本和2行空:

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

要计算记录或行中的字段数,我们使用 NR 内置变量,如下所示:

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

接下来,您还可以使用 FS 内置变量指定输入字段分隔符,它定义 Awk 如何将输入行划分为字段。

FS 的默认值是空格和制表符,但我们可以将 FS 的值更改为任何字符,以指示 Awk 相应地划分输入行。

有两种方法可以做到这一点:

  1. 一种方法是使用 FS 内置变量
  2. 第二个是调用 -F Awk 选项

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

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

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

或者,我们还可以利用 FS 内置变量,如下所示:

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

要指定输出字段分隔符,请使用 OFS 内置变量,它定义如何使用我们使用的字符分隔输出字段,如下例所示:

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

在本文中,我们探讨了使用带有预定义值的 Awk 内置变量的想法。但是我们也可以更改这些值,不过,不建议这样做,除非您知道自己在做什么,并且有足够的理解。

本文由 mdnice 多平台发布

相关推荐

  1. awk数值函数

    2024-05-10 07:52:05       50 阅读
  2. 如何使用Python的函数和模块?

    2024-05-10 07:52:05       39 阅读
  3. 课时21:变量_脚本相关

    2024-05-10 07:52:05       45 阅读
  4. 环境变量和Bash命令

    2024-05-10 07:52:05       31 阅读
  5. nginx常用变量

    2024-05-10 07:52:05       24 阅读
  6. linux中sed命令和awk命令如何使用??????

    2024-05-10 07:52:05       29 阅读
  7. Jenkins 变量变量作用域

    2024-05-10 07:52:05       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 07:52:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 07:52:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 07:52:05       82 阅读
  4. Python语言-面向对象

    2024-05-10 07:52:05       91 阅读

热门阅读

  1. 常见的前端框架

    2024-05-10 07:52:05       28 阅读
  2. Jmeter压测问题汇总

    2024-05-10 07:52:05       34 阅读
  3. Vue 传送门

    2024-05-10 07:52:05       27 阅读
  4. Linux习题和答案

    2024-05-10 07:52:05       37 阅读
  5. 十二届蓝桥杯Python组3月中/高级试题 第四题

    2024-05-10 07:52:05       31 阅读
  6. 负载均衡总结

    2024-05-10 07:52:05       38 阅读
  7. Ubuntu服务器命令行关机&重启&查询记录

    2024-05-10 07:52:05       37 阅读
  8. Nacos配置实时更新:微服务架构下的关键实践

    2024-05-10 07:52:05       32 阅读
  9. elasticsearch搭建教程

    2024-05-10 07:52:05       32 阅读
  10. Android ScrollView 在按键向下滚动后会回弹问题

    2024-05-10 07:52:05       32 阅读