当前位置: 首页 > news >正文

shell基础-awk

awk 是一个强大的文本处理工具,广泛用于 Unix 和 Linux 系统中。它可以用来处理和分析文本文件,特别是那些包含结构化数据的文件。以下是 awk 的基础知识和一些常用示例。

基本概念

  1. 记录和字段

    • 记录awk 处理的每一行文本称为一条记录。
    • 字段:每条记录中的列称为字段。默认情况下,字段由空格或制表符分隔。
  2. 内置变量

    • NR:当前记录的行号。
    • NF:当前记录中的字段数。
    • FS:字段分隔符,默认为空格或制表符。
    • OFS:输出字段分隔符,默认为空格。
    • ORS:输出记录分隔符,默认为换行符。
    • RS:记录分隔符,默认为换行符。
    • $0:当前记录的全部内容。
    • $n:当前记录的第 n 个字段
  3. 模式和动作

    • 模式:定义了何时执行某些操作的条件。
    • 动作:在满足模式条件时执行的一系列命令,用 {} 包围。

基本语法

awk 'pattern { action }' file

常用示例

1. 打印文件的每一行
awk '{ print $0 }' file.txt
2. 打印文件的第二列
awk '{ print $2 }' file.txt
3. 打印文件中所有包含特定字符串的行
awk '/pattern/ { print $0 }' file.txt
4. 打印文件中第一列和第三列
awk '{ print $1, $3 }' file.txt
5. 使用自定义字段分隔符
awk -F',' '{ print $1, $2 }' file.csv
6. 计算文件中某列的总和
awk '{ sum += $1 } END { print "Sum:", sum }' file.txt
7. 计算文件中某列的平均值
awk '{ sum += $1; count++ } END { print "Average:", sum/count }' file.txt
8. 根据条件过滤行
awk '$1 > 10 { print $0 }' file.txt
9. 使用 BEGIN 和 END 块
awk 'BEGIN { print "Start of processing" } { print $0 } END { print "End of processing" }' file.txt

实际应用

假设有一个文件 data.txt,内容如下:

Alice 30
Bob 25
Charlie 35
David 28
1. 打印所有人的名字
awk '{ print $1 }' data.txt

输出:

Alice
Bob
Charlie
David
2. 打印年龄大于 25 的人
awk '$2 > 25 { print $0 }' data.txt

输出:

Alice 30
Charlie 35
David 28
3. 计算所有人的平均年龄
awk '{ sum += $2; count++ } END { print "Average age:", sum/count }' data.txt

输出:

Average age: 29.5

进阶用法

1. 使用数组
awk '
{count[$1]++
}
END {for (name in count) {print name, count[name]}
}
' data.txt

输出:

Alice 1
Bob 1
Charlie 1
David 1
2. 多文件处理
awk '
{total += $2
}
END {print "Total age across all files:", total
}
' file1.txt file2.txt

总结

awk 是一个非常强大的文本处理工具,适用于各种文本分析任务。通过理解其基本概念和常用语法,你可以高效地处理和分析数据。

相关文章:

shell基础-awk

awk 是一个强大的文本处理工具,广泛用于 Unix 和 Linux 系统中。它可以用来处理和分析文本文件,特别是那些包含结构化数据的文件。以下是 awk 的基础知识和一些常用示例。 基本概念 记录和字段: 记录:awk 处理的每一行文本称为一…...

@Controller 和 @RestController 区别

功能范畴: Controller:用于定义一个控制器类,主要用于处理用户请求并返回视图(通常是HTML页面)。常常与 Spring MVC 的视图解析器一起使用。RestController:是一个特殊类型的控制器,用于返回数据而不是视图…...

【数据库设计】规范设计理论之数据依赖的公理系统(1)

知道范式的几种分类之后还并不能帮助我们设计一款好的数据库,在对关系进行拆解(指模式分解)之前,我们需要引入一个理论基础让设计过程变得有迹可循和具备一定的严谨性以此来支撑数据库背后的可靠性。 Armstrong公理系统 所谓公理…...

Leetcode 合并两个数组

算法思想是双指针从后往前合并,利用了 nums1 数组的尾部空间来存储合并后的结果,从而避免了额外空间的使用。具体步骤如下: 初始化指针: i 指向 nums1 的有效元素末尾,即位置 m - 1。j 指向 nums2 的末尾,即…...

Native Crash 信号速查

重点信号 SIGSEGV(11) signal segmentation violation:段错误无效内存访问访问无权访问的内存空指针、越界访问(mmap?) SIGBUS(7) Bus Error:总线错误非法内存访问访问 …...

【工具变量】自由贸易试验区试点DID数据集(2003-2023年)

数据简介:自由贸易试验区(Free Trade Zone,简称FTZ)是中国ZF在新形势下为了推进GG开放、提高开放型经济水平而采取的重要战略举措。自贸试验区在一国的部分领土内运入任何货物,被认为在关境以外,免于实施惯…...

js-在数组中根据name查找出对应id(find与filter方法)

1.根据name查找出对应id 使用数组的 find 方法来根据对象的某个属性(如名称)查找对应的对象,并获取该对象的 id 属性。 2.find 方法 const array [ { id: 1, name: Alice }, { id: 2, name: Bob }, { id: 3, name: Charlie } ]; 使用…...

推荐:自然语言处理方向的一些创新点

以下是自然语言处理研究方向的一些创新点: 一、预训练模型的改进与优化 模型架构创新 融合多模态信息: 传统的自然语言处理模型主要处理文本信息。创新点在于将图像、音频等多模态信息融合到预训练模型中。例如,对于描述一幅画的文本&#x…...

成都睿明智科技有限公司抖音电商服务的领航者

在这个短视频风起云涌的时代,抖音电商以其独特的魅力迅速崛起,成为无数商家争夺流量与销量的新战场。在这片红海之中,如何脱颖而出,实现销售额的飞跃?今天,就让我们一同走进成都睿明智科技有限公司&#xf…...

【大数据学习 | kafka】kafka的整体框架与数据结构

1. kafka的整体框架 首先kafka启动以后所有的broker都会向zookeeper进行注册,在/brokers/ids中以列表的形式展示所有的节点,在/controller节点中使用独享锁实现broker的选举,其中一个机器为主节点。其他的为从节点,选举的根本原则…...

隐私保护下的数据提取策略

在隐私保护下进行数据提取,需要采取一系列策略来确保个人隐私得到妥善保护,同时满足数据使用的需求。以下是一些关键的策略和方法: 一、数据最小化原则 定义:仅收集和提取必要的数据,避免收集过多的个人信息或不相关…...

vue 和 django 报 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,

在使用 Vue 和 Django 进行前后端分离开发时,如果遇到 AxiosError: Network Error 的错误,通常可能是由于以下几种原因引起的。下面列出了一些常见的原因和解决方案。 1. CORS(跨源资源共享)问题 当你的 Vue 应用和 Django 后端…...

「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置

本篇将专注于如何在 DevEco Studio 中安装和配置必要的插件,以增强开发功能和提升效率。通过正确配置插件,开发流程能够得到简化,开发体验也会更加顺畅。 关键词 插件安装配置优化DevEco Studio开发工具 一、插件的重要性 插件可以大幅扩展…...

【论文阅读】PGAN

1. WHY 问题 图像超分辨率一直是一个热门研究课题,具有重要的应用价值。基于生成对抗网络GAN的单幅图像超分辨率方法显示重建图像与人类视觉特征更一致。因此,基于 GAN 的网络优化已成为图像超分辨率的主流。然而,一些最新研究表明&#xf…...

基于Unet卷积神经网络的脑肿瘤MRI分割

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【YOLO模型实现农作物病虫害虫识别带GUI界面】 2.【卫星图像道路检测DeepLabV3P…...

[java][基础]HTTPTomcatServlet

1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站,这些网站统称为Web网站。如下就是通…...

【开源免费】基于SpringBoot+Vue.JS网上超市系统(JAVA毕业设计)

本文项目编号 T 037 ,文末自助获取源码 \color{red}{T037,文末自助获取源码} T037,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

【单片机】深入剖析USART与UART的区别

在嵌入式系统和微控制器开发中,串行通信是一个非常关键的概念,涉及到不同设备之间的数据传输。常见的串行通信协议包括UART(Universal Asynchronous Receiver/Transmitter)和USART(Universal Synchronous/Asynchronous…...

‌Linux tac命令‌

‌Linux tac命令‌是一个用于逆序显示文件内容的工具,其名称来源于“cat”的反向拼写。tac命令的基本功能是将文件的内容从最后一行开始输出,直到第一行结束,这与cat命令的功能相反,cat命令是从第一行开始输出直到最后一行。 tac…...

从简单的demo开始让您逐步了解GetX的用法

目录 前言 一、从demo开始体现下Getx的用法 二、从最简单的功能开始 1.新建一个Flutter工程 2.GetX初体验 1.路由跳转 1.普通路由跳转 2.跳转并从堆栈中销毁当前页面 3.跳转并销毁之前所有页面 4.跳转以及传值 2.更方便的实现SnackBar、Dialog、BottomSheet 三、Ge…...

用MobaXterm替代传统终端的完整指南

Windows远程运维革命:用MobaXterm替代传统终端的完整指南 每次打开 PuTTY 时,你是否会对着那个灰暗的界面叹气?当需要在Xshell中频繁切换标签时,是否感到效率低下?作为Windows系统管理员或开发者,我们长期忍…...

Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读

Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读 “见微知著,凝光成影。将梦境的碎片,凝结为永恒的视觉诗篇。” 如果你对AI绘画感兴趣,一定听说过Stable Diffusion XL 1.0这个强大的开源模型。但面对复杂的参…...

借助yakit高效构建渗透字典:从历史流量中智能提取关键参数

1. 为什么需要从历史流量中提取渗透字典? 做过渗透测试的朋友都知道,字典的质量直接影响测试效率。传统方式要么用现成的通用字典,要么手动收集整理,前者命中率低,后者耗时费力。我遇到过最头疼的情况是测试一个Web系统…...

FGF-21蛋白的代谢调控机制与临床转化前景

一、引言成纤维细胞生长因子21(FGF-21)是成纤维细胞生长因子家族中的一种内分泌代谢调节因子。自其被发现以来,该蛋白因其在糖脂代谢、能量稳态调控及胰岛素敏感性改善等方面的独特作用,逐渐成为代谢性疾病研究领域的前沿热点。与…...

OpenClaw性能优化:GLM-4.7-Flash长任务链的Token节省技巧

OpenClaw性能优化:GLM-4.7-Flash长任务链的Token节省技巧 1. 问题背景:长任务链的Token消耗困境 上周我尝试用OpenClaw自动化处理一个典型的办公场景:从200页PDF中提取关键数据,整理成Excel表格后发送邮件。整个流程涉及PDF解析…...

CosyVoice Docker 部署优化:如何有效降低 CPU 占用率

在语音合成服务日益普及的今天,CosyVoice 凭借其出色的音质和灵活性,成为了许多开发者的选择。然而,当我们将它部署到 Docker 容器中时,一个普遍且棘手的问题随之而来:CPU 占用率居高不下。这不仅导致服务器资源成本飙…...

基于dify智能客服助手的yml配置实战:从零搭建高可用对话系统

在智能客服领域,快速响应和精准理解用户意图是核心诉求。然而,传统基于硬编码或复杂数据库配置的客服系统,往往面临开发周期长、业务逻辑调整困难、多环境部署繁琐等痛点。每次新增一个业务场景,都需要开发人员介入修改代码、测试…...

毕业生就业新趋势:央国企成首选“避风港”

据教育部数据显示,2024届全国普通高校毕业生规模预计达到1179万人,创历史新高。在宏观经济环境面临挑战、部分行业竞争加剧的背景下,庞大的毕业生群体面临着前所未有的就业压力。与此同时,一个显著的趋势正在显现:中央…...

智能客服方案库物流JSON格式优化:从数据冗余到高效解析

在智能客服系统中,物流信息的查询与展示是高频核心功能。随着业务增长,我们方案库中存储和传输的物流JSON数据日益庞大。最初为了图省事,我们采用了“全量字段”的设计,即每次接口返回都包含物流单号、状态、时间、承运商、路由节…...

3个关键步骤掌握BetaFlight黑匣子日志分析:从新手到专家

3个关键步骤掌握BetaFlight黑匣子日志分析:从新手到专家 【免费下载链接】blackbox-log-viewer Interactive log viewer for flight logs recorded with blackbox 项目地址: https://gitcode.com/gh_mirrors/bl/blackbox-log-viewer BetaFlight Blackbox Log…...