day20:三剑客——awk基础

一,概述

AWK 是一种用于处理文本和数据的编程语言,特别擅长用于处理格式化文本文件。它通过将输入数据分成字段,逐行进行处理,广泛应用于数据分析、文本处理和系统管理中。

二,使用方式

命令模式(重点)

AWK 可以直接在命令行中运行,适合执行一些简短的文本处理任务。基本格式如下:

awk 【选项】 '条件 {动作}' 文件名

-F:定义字段的分隔符,默认空格

-v:定义变量并赋值

awk -F : '{print $1,$3,$NF}' a.txt 
如果分隔符为默认的空格的话就不要写-F了

脚本模式(了解)

复杂的 AWK 程序可以写入一个脚本文件,通过 -f 选项执行。

awk -f script.awk 文件名

三,工作原理

AWK 的工作原理是逐行读取文件,将每行内容分割成字段,并根据指定的条件进行相应的操作。它通常分为三大块:

  • BEGIN:在处理文件内容前执行的语句。
  • 主体:逐行处理数据。
  • END:在处理文件内容后执行的语句。

四,内部变量(重点)

AWK 提供了一些内置的内部变量,用于控制和访问数据:

  • $0:当前行的内容。

  • $1$2…:当前行的第一个、第二个字段

  • $NF:当前行的最后列

  • NF:当前行的字段数。

  • NR:当前处理的行数。

  • FS:字段分隔符(默认为空格)命令行中使用-F 符号 形式或者放到{内}。

    • 在 AWK 中,FS 应在 BEGIN 块中设置,或者直接通过 -F 参数设置,这样才能在文件读取前生效。

  • OFS:输出字段分隔符(默认空格)放到{OFS="分隔符"}

  • RS:记录分隔符(默认为换行符)。

五,自定义变量

六,begin-end语法(重点)

语法

BEGIN { 初始化代码 }
{ 主体代码 }
END { 收尾代码 }

七,awk结合正则表达式(重要)

AWK 可以结合正则表达式来进行复杂的数据匹配。例如,匹配以特定字符开头的行或包含特定模式的字段。

awk '/正则表达式/ {动作}' 文件名

算术运算符
  • +:加法,例如 x + y
  • -:减法,例如 x - y
  • *:乘法,例如 x * y
  • /:除法,例如 x / y
  • %:取模,例如 x % y
  • ++--:自增和自减,适用于变量,例如 x++--y
比较运算符

用于比较两个值,常用在条件判断中:

  • ==:等于,例如 $1 == 10
  • !=:不等于,例如 $2 != "text"
  • ><:大于和小于,例如 $3 > 5
  • >=<=:大于等于和小于等于
逻辑运算符

用于组合条件:

  • &&:逻辑与(AND),当两个条件都为真时返回真。

    awk '$1 > 10 && $2 < 20 {print $0}' file.txt

  • ||:逻辑或(OR),当至少一个条件为真时返回真。

    awk '$1 > 50 || $2 < 5 {print $0}' file.txt

  • !:逻辑非(NOT),将条件的真假性取反。

    awk '!/error/ {print $0}' file.txt

正则运算符
  • ~:匹配运算符,用于检测字段是否符合某个正则表达式。

    awk '$1 ~ /^[A-Z]/ {print $0}' file.txt # 第一个字段以大写字母开头

  • !~:不匹配运算符,检测字段是否不符合某个正则表达式。

    awk '$1 !~ /error/ {print $0}' file.txt # 第一个字段不包含 "error"

八,流程控制

AWK 提供了 ifelsewhilefor 等控制语句来实现复杂的逻辑判断和数据处理。

流程控制

{ if (条件) {动作} else {其他动作} }

循环控制

{ for (i=1; i<=NF; i++) {print $i} }

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

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

相关文章

深度学习基础练习:从pytorch API出发复现LSTM与LSTMP

2024/11/5-2024/11/7&#xff1a; 前置知识&#xff1a; [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 【官方双语】LSTM&#xff08;长短期记忆神经网络&#xff09;StatQuest_哔哩哔哩_bilibili 大部分思路来自于&#xff1a; PyTorch LSTM和LSTMP…

半导体企业如何利用 Jira 应对复杂商业变局?

以下是一篇关于如何利用 Jira 构建半导体企业数字化研发管理蓝图的文章。借鉴了 ONES 案例中的思路&#xff0c;并结合了 Jira 的特点&#xff0c;为半导体企业在复杂商业环境下进行数字化转型提供支持&#xff1a; 半导体企业如何利用 Jira 应对复杂商业变局&#xff1f; 在全…

嵌入式开发之进程执行另外程序

进程-exec函数族 进程调用exec函数族执行某个程序进程当前内容被指定的程序替换实现让父子进程执行不同的程序,父进程创建子进程,子进程调用exec函数族,父进程不受影响,例如:shell,接收程序名称,执行用户指定的程序。1、进程-execl/execlp //进程-execl/execlp #includ…

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式&#xff0c;可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…

【Rust设计模式之建造者模式】

Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离&#xff0c;使用专门的builder进行建造&#xff0c;说白了就是new和其他的方法分开&#xff0c;集中处理更方便。 直接上代码&#xff1a; #[derive(Debug)] struct children {nam…

Servlet 3.0 新特性全解

文章目录 Servlet3.0新特性全解Servlet 3.0 新增特性Servlet3.0的注解Servlet3.0的Web模块支持servlet3.0提供的异步处理提供异步原因实现异步原理配置servlet类成为异步的servlet类具体实现异步监听器改进的ServletAPI(上传文件) Servlet3.0新特性全解 tomcat 7以上的版本都支…

PPT文件设置了修改权限,如何取消权?

不知道大家在使用PPT文件的时候&#xff0c;是否遇到过下面的提示框&#xff0c;这就是PPT文件设置了修改权限&#xff0c;只有输入密码才可以编辑文件。 如果我们没有输入密码&#xff0c;以只读方式进入&#xff0c;那么我们会发现功能栏中的按钮全是灰色&#xff0c;无法使用…

牛客sql题目总结(1)

1.第N高的薪水 AC: create function getnthhighestsalary(n int) returns int begindeclare m int; set m n - 1; return (select distinct salaryfrom employeeorder by salary desclimit m, 1); end 2.平均播放进度大于60%的视频类别 AC&#xff1a; select tb_video_info…

【NLP】使用 SpaCy、ollama 创建用于命名实体识别的合成数据集

命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务&#xff0c;用于自动识别和分类文本中的实体&#xff0c;例如人物、位置、组织等。尽管它很重要&#xff0c;但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…

2024年10月个人工作生活总结

本文为 2024年10月工作生活总结。 研发编码 一个证书过期问题记录 某天&#xff0c;现场反馈某服务无法使用问题&#xff0c;经同事排查&#xff0c;是因为服务证书过期导致的。原来&#xff0c;证书的有效期设置为5年&#xff0c;这个月刚好到期。 虽然这个问题与自己无直接…

AIGC:人工智能生成内容的未来

文章目录 一、AIGC的定义与背景1.1 AIGC的起源与发展1.2 AIGC的核心技术 二、AIGC的核心技术解析2.1 生成对抗网络&#xff08;GANs&#xff09;2.2 变分自编码器&#xff08;VAEs&#xff09;2.3 自然语言处理&#xff08;NLP&#xff09;与文本生成 三、AIGC的应用场景四、AI…

【51单片机】串口通信原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…

线程函数和线程启动的几种不同形式

线程函数和线程启动的几种不同形式 在C中&#xff0c;线程函数和线程启动可以通过多种形式实现。以下是几种常见的形式&#xff0c;并附有相应的示例代码。 1. 使用函数指针启动线程 最基本的方式是使用函数指针来启动线程。 示例代码&#xff1a; #include <iostream&g…

C语言网络编程 -- TCP/iP协议

一、Socket简介 1.1 什么是socket socket通常也称作"套接字"&#xff0c;⽤于描述IP地址和端⼝&#xff0c;是⼀个通信链的句柄&#xff0c;应⽤ 程序通常通过"套接字"向⽹络发出请求或者应答⽹络请求。⽹络通信就是两个进程 间的通信&#xff0c;这两个进…

Qt字符编码

目前字符编码有以下几种&#xff1a; 1、UTF-8 UTF-8编码是Unicode字符集的一种编码方式(CEF)&#xff0c;其特点是使用变长字节数(即变长码元序列、变宽码元序列)来编码。一般是1到4个字节&#xff0c;当然&#xff0c;也可以更长。 2、UTF-16 UTF-16是Unicode字符编码五层次…

Linux下的ADC

ADC ADC简介 ADC是 Analog Digital Converter 的缩写&#xff0c;翻译过来为模数转换器&#xff0c;ADC可以将模拟值转换成数字值。模拟值是什么呢?比如我们日常生活中的温度&#xff0c;速度&#xff0c;湿度等等都是模拟值。所以如果我们想测量这些模拟值的值是多少&#x…

小物体检测模型

检测自然环境下的小物体&#xff08;如鸟类&#xff09;&#xff0c;尤其是在低分辨率、模糊、复杂背景和动态移动的条件下&#xff0c;是一个相对困难的任务。为了解决这个问题&#xff0c;可以考虑使用以下工具和方法来提升小物体检测的效果&#xff1a; 1. 使用专门优化的小…

理解Web登录机制:会话管理与跟踪技术解析(二)-JWT令牌

JWT令牌是一种用于安全地在各方之间传递信息的开放标准&#xff0c;它不仅能够验证用户的身份&#xff0c;还可以安全地传递有用的信息。由于其结构简单且基于JSON&#xff0c;JWT可以在不同的系统、平台和语言间无缝传递&#xff0c;成为现代Web开发中不可或缺的一部分。 文章…

论 ONLYOFFICE:开源办公套件的深度探索

公主请阅 引言第一部分&#xff1a;ONLYOFFICE 的历史背景1.1 开源软件的崛起1.2 ONLYOFFICE 的发展历程 第二部分&#xff1a;ONLYOFFICE 的核心功能2.1 文档处理2.2 电子表格2.3 演示文稿 第三部分&#xff1a;技术架构与兼容性3.1 技术架构3.2 兼容性 第四部分&#xff1a;部…

sql报错信息将字符串转换为 uniqueidentifier 时失败

报错信息&#xff1a; [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]将字符串转换为 uniqueidentifier 时失败 出错行如下&#xff1a; 表A.SourceCode 表B.ID 出错原因&#xff1a; SourceCode是nvarchar,但ID是uniqueidentifier 数据库查询字段和类…