深入探索 Linux 命令之 AWK:文本处理的神兵利器

深入探索 Linux 命令之 AWK:文本处理的神兵利器

在 Linux 系统中,文本处理是日常运维和数据分析中不可或缺的一部分。而 awk 命令,作为 Linux 文本处理三剑客之一(另外两个是 sedgrep),以其强大的文本处理能力,赢得了广大用户的喜爱。本文将带你深入探索 awk 的基本用法和高级特性,让你能够灵活运用这一神兵利器。

一、AWK 是什么?

awk 是一个强大的文本分析工具,它可以从文本文件中提取信息并进行格式化输出。它的名称来源于其创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的姓氏首字母。awk 的主要作用是在文本文件中按行处理,并可以对每一行进行切片和模式匹配,进而执行相应的操作。

二、AWK 的基本用法

1. 基本结构

awk 命令的基本结构如下:

awk 'pattern { action }' file
  • pattern:是一个正则表达式,用于匹配输入文本中的每一行。如果省略,则默认匹配每一行。
  • action:是在模式匹配成功时执行的命令。如果没有指定 action,则默认打印整行。
  • file:是待处理的文本文件。如果省略,则默认从标准输入读取。

2. 内置变量

awk 提供了许多内置变量,用于存储文本文件的元信息,如字段分隔符、当前行号等。常用的内置变量有:

  • $0:表示当前行。
  • $1$2、…、$n:表示当前行的第 1 个、第 2 个、…、第 n 个字段,字段之间由 FS(字段分隔符)分隔。
  • FS:字段分隔符,默认为空格或制表符。
  • NF:当前行的字段数量。
  • NR:当前行的行号。

3. 示例

以下是一个简单的示例,演示了如何使用 awk 打印文件 example.txt 中每一行的第一个字段:

awk '{ print $1 }' example.txt

如果 example.txt 的内容如下:

apple 100 red
banana 50 yellow
cherry 30 red

则上述命令将输出:

apple
banana
cherry

三、AWK 的高级特性

1. 条件语句

awk 支持 ifelseelse if 等条件语句,可以根据条件执行不同的操作。

2. 循环语句

awk 支持 forwhiledo-while 等循环语句,可以对文本进行迭代处理。

3. 数组

awk 支持数组,可以存储和处理多组数据。

4. 内置函数

awk 提供了许多内置函数,如字符串处理函数、数学函数、时间函数等,可以方便地处理文本数据。

5. 多文件处理

awk 可以同时处理多个文件,并在处理过程中进行文件间的比较和合并。

四、总结

awk 是一个功能强大的文本处理工具,它以其独特的语法和强大的处理能力,在 Linux 系统中占据了重要的地位。通过本文的介绍,相信你已经对 awk 有了更深入的了解,并能够在实际工作中灵活运用它来处理文本数据。如果你对 awk 还有更深入的需求或疑问,建议查阅相关书籍或在线文档,以获取更全面的信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨越百亿营收的今世缘,全国化进程仍挑战重重?

当前,白酒市场正在经历一场深度调整,随着存量时代到来,白酒品牌地位的更替和竞争格局的重构已经展开。这一背景下,今世缘等地方性酒企也正在凭借对区域市场的深耕,展现出较快的成长速度,并希望能借此占领市…

搭建一个基于主流技术Spring Boot 2 + Vue 3 + Ant Design Vue的技术框架的简要步骤

搭建一个基于主流技术Spring Boot 2 Vue 3 Ant Design Vue的技术框架涉及前后端分离的开发模式。以下是一个简化的步骤指南,用于帮助你开始这个项目: 1. 后端(Spring Boot 2) 1.1 初始化项目 使用Spring Initializr(…

超强算力 Orange Pi Kunpeng Pro 开发板基础测评与体验

目录 开箱体验资源简介系统启动连接网络登录系统通过桌面登录通过串口登录通过 SSH 登录配置散热风扇 算力测试MNIST示例MBNET示例 体验总结 大家好,我是 Hello 阿尔法,有幸接到 CSDN 的邀请参与 Orange Pi Kunpeng Pro 开发板的测评活动,本文…

【Redis】redis高阶-使用zset实现延时队列

Hi,大家好,我是抢老婆酸奶的小肥仔。 最近在使用redis时,就想能不能用其实现消息队列?也在网上看了下其他小伙伴写的实现,结合自身业务实现了如下消息队列,希望对大家有用。 废话不多说,直接开撸。 1、为…

The minCompileSdk (34) specified in adependency‘s AAR metadata

新版AS新增Activity的时候,数据结构是:import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInse…

hmcode硬件编程1

在/home/golemon/hmcode/applications/sample/wifi-iot/app内创建文件夹。 这里创建了d_6_3文件夹 . ├── BUILD.gn ├── d_6_3 │ ├── BUILD.gn │ └── lab.c ├── demolink │ ├── BUILD.gn │ └── helloworld.c ├── iothardware │ ├── B…

安装Lubuntu24.04

Lubuntu24.04安装过程与22.04、20.04等完全一致。 记录 01 02 03 04 05 09 给出提示 10 11 12 13 特点 Lubuntu 22.04的特点主要包括以下几点: 轻量级且高效:Lubuntu作为Ubuntu的一个轻量级分支,专注于为低端电脑、老旧电脑或需要最大限…

【Java】设计一个支持敏感数据存储和传输安全的加解密平台

一、问题解析 在一个应用系统运行过程中,需要记录、传输很多数据,这些数据有的是非常敏感的,比如用户姓名、手机号码、密码、甚至信用卡号等等。这些数据如果直接存储在数据库,记录在日志中,或者在公网上传输的话&…

kubernetes之安装ingress-nginx(k8s1.19版本之后)

ingress-nginx 1. 项目地址2. 操作环节3. 测试3.1 部署nginx及tomcat3.2 部署ingress 1. 项目地址 ingress-nginx项目地址 2. 操作环节 rootmaster1:~# kubectl apply -f nginx-ingress-controller/manifests/rootmaster1:~# kubectl get pods -n ingress-nginx NAME …

如何在QGIS中加载MapBox图源

在设计行业中需要多风格地图的调用,不管是规划、建筑设计还是景观,分析图的工作量都大,有好的底图,会事半功倍。 针对不同项目,会选择不同配色的底图,以便让设计内容中的呈现足够清晰。 这里就来分享一个…

DP读书:《半导体物理学(第八版)》(七) 金属与半导体的接触- 10 min 速通(载流子分布)

《半导体物理学(第八版)》10 min 速通 金属与半导体的接触 7.1 金属与半导体的接触及其能带图7.1.1 金属和半导体的功函数7.1.2 接触电势差7.1.3 表面态对接触势垒的影响 7.2 金属半导体接触整流理论7.2.1 扩散理论7.2.2 热电子发射理论7.2.3 镜像力和隧…

深度神经网络——什么是梯度下降?

如果对神经网络的训练有所了解,那么很可能已经听说过“梯度下降”这一术语。梯度下降是提升神经网络性能、降低其误差率的主要技术手段。然而,对于机器学习新手来说,梯度下降的概念可能稍显晦涩。本文旨在帮助您直观理解梯度下降的工作原理。…

论文精读--Swin Transformer

想让ViT像CNN一样分成几个block,做层级式的特征提取,从而使提取出的特征有多尺度的概念 Abstract This paper presents a new vision Transformer, called Swin Transformer, that capably serves as a general-purpose backbone for computer vision. …

cesium 的初步认识

Cesium是一个基于JavaScript开发的WebGL三维地球和地图可视化库。它利用了现代Web技术,如HTML5、WebGL和WebAssembly,来提供跨平台和跨浏览器的三维地理空间数据可视化。Cesium的主要特点包括: 跨平台、跨浏览器:无需额外插件&am…

Python 装饰器为被包装的函数添加参数

文章目录 需求:方案解析 需求: 我们想编写一个装饰器为被包装的函数添加额外的参数。但是,添加的参数不能影响到该函数已有的调用约定 方案 from functools import wrapsdef optional_debug(func):wraps(func)def wrapper(*args, debugFalse, **kwargs):if debug…

常见4种时间管理方法及实施步骤(收藏版)

有效的时间管理方法,不仅能够保证项目按时交付,还能提高开发效率,减少成本超支和质量风险。如果缺乏明确的时间规划,可能会导致任务延误;容易造成资源分配不当,导致整体效率低下和成本增加。 因此有效的时间…

anaconda pycharm jupter分别是

Anaconda Anaconda是一个面向数据科学的Python发行版,它包含了Python解释器、conda包管理器、以及大量的科学计算和数据分析库。Anaconda的主要功能是提供一个易于管理的环境,用于安装、运行和更新Python包,同时支持创建和切换不同的Python环…

Python高级编程:数据库操作与ORM

Python高级编程:数据库操作与ORM 在前几篇文章中,我们探讨了Python的基础语法、面向对象编程、标准库、第三方库、并发编程、异步编程以及网络编程与网络爬虫。在这篇文章中,我们将深入探讨Python中的数据库操作与对象关系映射(ORM)。这些技术对于持久化数据、数据查询和…

docker 安装mysql,redis,rabbitmq

文章目录 docker 安装ngnix,mysql,redis,rabbitmq安装docker1.安装下载docker-ce源命令2.安装docker3.查看版本4.查看docker状态5.启动docker6.测试安装ngnix 安装mysql8.0.361.拉取mysql镜像2.安装mysql8 安装redis1.拉取redis7.0.11镜像2.安装redis3.进入容器内部…

独立游戏开发的 6 个步骤

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…