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 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/606303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实时路况信息获取的意义:点亮盲人前行的每一寸道路

在这个日新月异的科技时代,一款名为“蝙蝠避障”的创新应用正以温暖而坚定的步伐,为盲人朋友们的日常出行编织着安全与自由的网络。这款应用的核心——激光雷达技术,正以前所未有的方式,重新定义着实时路况信息获取的意义&#xf…

第二证券午评:沪指涨近1%,地产、半导体等板块拉升,锂电池概念活跃

9日早盘,两市股指全线走高,沪指涨近1%,创业板指大涨近2%;北向资金大举出场扫货,半日净买入超100亿元。 到午间收盘,沪指涨0.91%报3156.96点,深成指涨1.63%,创业板指涨1.85%&#xf…

【基于 PyTorch 的 Python深度学习】5 机器学习基础(2)

前言 文章性质:学习笔记 📖 学习资料:吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容:根据学习资料撰写的学习笔记,该篇主要介绍了如何选择合适的激活函数、损失函数和优化器…

学习大数据,所需更要的shell基础(2)

文章目录 read读取控制台输入函数系统函数bashnamedirname 自定义函数Shell工具(重点)cutawk 正则表达式入门常规匹配常用特殊字符 read读取控制台输入 1)基本语法 read (选项) (参数) ①选项: -p:指定读取值时的提示…

【福利】思科CCNP考试介绍(附CCNP题库下载)

网络行业有两个大神级别的证书:思科认证和华为认证,目前相比思科认证,华为认证在国内更加吃香哦,如果你在国内就业或发展考虑建议考华为的。不过还是有少部分在外企或有出国计划的IT人员考思科的。 那今天小微就来给大家介绍下思科…

SpringBoot启动流程源码解析

目录 一、SpringApplication构造方法解析 1. web应用类型 2. BootstrapRegistryInitializer 3. ApplicationContextInitializer 4. ApplicationListener 5. 推断Main方法所在类 二、SpringApplication.run(String... args)方法解析 1.创建DefaultBootstrapContext 2.获…

回顾5款我非常喜欢的软件,希望大家也能喜欢

​ 我喜欢分享好软件,这就像与老友聊天一样让我感到快乐。在这个过程中,我可以回顾这些实用的小工具,也希望它们可以帮助到更多人。 1.备份工具——Cobian Backup ​ Cobian Backup是一款功能强大的备份软件,支持自动定时备份、增量备份、差异备份等多种备份方式。…

Java八股文系列之四(JVM)

什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。 Java 实现跨平台的主要原因在于它的编译和执行方式。Java 程序首先被编译成中间代码(bytecode),然…

九泰智库 | 医械周刊- Vol.26

⚖️ 法规动态 国家卫健委等八部门印发《关于加强重症医学医疗服务能力建设的意见》 5月6日,国家卫健委发布《关于加强重症医学医疗服务能力建设的意见》,明确我国重症医学领域的重要部署。数据显示,我国在重症救治设备方面依然存在巨大缺口…

vue中使用element的i18n语言转换(保姆式教程-保证能用)

1、项目中需要使用的插件,vue2或vue3、element、vue-i18n、js-cookie、vuex我是在vue2中使用 npm i element-ui -S npm i js-cookie -S npm i vue-i18n8.28.2 //因为我项目使用的vue2,直接安装报错了,就下载了固定的版本2、在main.js中引入i18n impor…

芸众商城电商专业版400+插件源码+搭建教程

介绍: 芸众商城社交电商系统SAAS平台前端基于vue开发,后端基于研发积分商城系统源码 php,本文安装芸众商城全插件(400多个)商业版平台源码,可同时支持多端口部署运行;使用宝塔面板一键部署的形…

出货300万片后,智舱界「小高通」浮出水面

‍作者 |张祥威 编辑 |德新 2024年北京车展,本土芯片公司开始截击外企供应商。 很长一段时间内,汽车行业智驾芯片看英伟达,座舱芯片看高通。英伟达Orin系列广受欢迎,高通8155席卷主流智能汽车,8295更是被视为最强配置…

倍思|西圣开放式耳机哪个好用?热门机型深度测评!

在数字化生活的浪潮中,耳机已成为我们不可或缺的伴侣。然而,长时间佩戴传统的耳机容易导致的耳道疼痛等问题,严重的话将影响听力。许多人开始寻找更为舒适的佩戴体验。开放式耳机因为不需要需直接插入耳道的设计,逐渐受到大众的青…

不会pdf修改编辑文字怎么办?看完秒懂

不会pdf修改编辑文字怎么办?在日常生活中,PDF文件已成为我们工作、学习不可或缺的一部分。然而,很多人对PDF文件的编辑操作感到困惑,尤其是修改其中的文字。今天,我们就来详细解析一下,不会PDF修改编辑文字…

全局变量在 Python 中的应用场景

在Python中,全局变量是在程序的全局范围内定义的变量,可以在整个程序中访问。虽然在Python中使用全局变量并不像在其他编程语言中那样被推荐,因为它可能导致代码不易理解和维护,但在一些特定的情况下,全局变量仍然是有…

企业微信hook接口协议,ipad协议http,设置是否自动同意

设置是否自动同意 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid":"bc4800492083fdec4c1a7e5c94","state":1 //1 是需要验证同意(需要手动点击同意) 0关闭验证…

gtest的编译与使用

文章目录 gtest的编译与使用概述笔记CMake参数官方文档测试程序测试效果END gtest的编译与使用 概述 gTest是 googletest的缩写,如果直接找gTest项目,是找不到的。 库地址 https://github.com/google/googletest.git 迁出到本地后,切到最新…

中电金信:看 “咨询+技术”如何引领数字化变革新风向

当前,新一轮创新技术和产业变革正在重塑全球的经济格局。日本政府及社会各界也从各个领域着手推进数字化。2021年,日本政府成立了“数字厅”,通过一系列举措推动数字化升级,希望将日本加速转型为数字经济的区域领导者,…

继续SQL

主知识点六:having 聚合前的筛选用where,聚合后的筛选用having Having和where的区别是:运行顺序和对象不用 Having是在group by聚合后的基础上进行筛选。 ● 【例题27*】(运行原理)查询总人口数至少为3亿的大洲和…

git的标签管理

理解标签 在Git中,标签tag用于标记特定的一个重要点,比如版本发布。标签允许捕捉某一次提交的状态,当我们需要退回到某次提叫的版本时,通过标签我们快速定位到。标签具有两种类型: 轻量标签:最简单的标签形式&#x…