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

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

引言

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

内置变量的值已经在 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

您将意识到,每个输入行都会打印出文件名,这是当您使用 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 相应地划分输入行。

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

  1. 一种方法是使用 FS 内置变量
  2. 第二个是调用 -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 内置变量的想法。但是我们也可以更改这些值,不过,不建议这样做,除非您知道自己在做什么,并且有足够的理解。

相关文章
|
12天前
|
存储 Linux BI
Linux 三剑客 grep、sed、awk
Linux三剑客`grep`、`sed`和`awk`是强大的文本处理工具。`grep`用正则表达式搜索匹配行;`sed`是流式编辑器,处理文本流而不直接修改原文件;`awk`则用于灵活的文本分析和报告生成。例如,`grep`可查找匹配模式,`sed`可以删除文件内容,而`awk`能提取特定字段。通过组合使用,它们能高效解决复杂文本任务。
18 1
|
26天前
|
算法 数据挖掘 Linux
探索Linux中的awk命令:强大的文本分析工具
探索Linux中的`awk`命令,一个强大的文本分析工具,用于模式扫描、数据提取与报告生成。本文介绍`awk`的用途、工作原理、特点及应用示例。`awk`基于"模式-动作"框架,从输入数据中匹配模式并执行相应操作。其特点包括:强大的文本处理能力、灵活的I/O及简洁的语法。示例涵盖了打印特定行、处理字段、计算统计值等场景。使用`awk`时要注意理解输入数据、测试脚本、优化性能和添加注释。深入学习以提升数据处理技能。
|
3天前
|
监控 Unix Linux
Linux中AWK命令的高级应用与案例分析
Linux中AWK命令的高级应用与案例分析
|
4天前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
5天前
|
监控 Unix Linux
Linux中AWK命令的高级应用与案例分析
Linux中AWK命令的高级应用与案例分析
|
1月前
|
Shell Linux
linux shell 脚本中变量截取
linux shell 脚本中变量截取
23 0
|
1月前
|
Linux Perl
编程入门(七)之【Linux进阶操作AWK】
编程入门(七)之【Linux进阶操作AWK】
27 0
|
2月前
|
安全 算法 Linux
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解(下)
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解(下)
|
2月前
|
存储 Linux 程序员
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解(中)
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解(中)
|
2月前
|
缓存 Linux 调度
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解(上)
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解(上)