每天学习一个Linux命令之awk

每天学习一个Linux命令之awk

介绍

在Linux系统中,有很多强大的命令可以帮助我们处理文本数据。其中一个非常常用且强大的命令就是awk。awk是一种编程语言,也是一种处理文本数据的工具。

awk通过在输入文本中匹配指定模式,并对匹配到的行执行相应的操作,来实现数据处理与分析。它的最基本的使用形式是:

awk "pattern { action }" file

在这个命令中,pattern是用来匹配输入文本行的条件,而action是对匹配到的行要执行的操作。下面我们将介绍awk命令的一些常用选项以及它们的用法。

常用选项

下面是awk命令的一些常用选项:

  1. -F fs:指定输入字段的分隔符,默认为" "(空格)。可以使用单个字符或正则表达式作为分隔符。
  2. -v var=value:定义一个变量并给它赋值。
  3. -f file:从指定文件中读取awk脚本。
  4. -F fs:指定输出字段的分隔符,默认为" "(空格)。
  5. -m[fr] val:指定匹配模式时使用的正则表达式。
  6. -W option:设置一些兼容性选项,比如-W traditional可以让awk按照传统的方式执行。

选项用法示例

-F fs

使用-F选项可以指定输入字段的分隔符。以下是一个例子:

假设我们有一个文件fruit.txt,内容如下:

apple,10
orange,5
banana,2

我们可以使用逗号作为分隔符,提取每一行的第一个字段,如下:

awk -F "," "{print $1}" fruit.txt

输出:

apple
orange
banana

-v var=value

使用-v选项可以定义一个变量并给它赋值。以下是一个例子:

awk -v name=John "{print "Hello, " name "!"}" example.txt

输出:

Hello, John!
Hello, John!
Hello, John!
...

-f file

使用-f选项可以从指定文件中读取awk脚本。以下是一个例子:

假设我们有一个名为script.awk的文件,内容如下:

BEGIN {count = 0}
{count = count + 1}
END {print "Total lines: " count}

我们可以使用下面的命令来执行这个awk脚本:

awk -f script.awk example.txt

输出:

Total lines: 10

-F fs

使用-F选项可以指定输出字段的分隔符。以下是一个例子:

假设我们有一个名为fruit.txt的文件,内容如下:

apple,10
orange,5
banana,2

我们可以使用逗号作为分隔符,打印每一行的第一个字段和第二个字段,如下:

awk -F "," "{print $1, $2}" fruit.txt

输出:

apple 10
orange 5
banana 2

-m[fr] val

使用-m选项可以指定匹配模式时使用的正则表达式。以下是一个例子:

假设我们有一个名为fruit.txt的文件,内容如下:

apple,10
orange,5
banana,2

我们可以使用正则表达式/^a/匹配以字母"a"开头的行,并打印这些行,如下:

awk -m "/^a/ {print}" fruit.txt

输出:

apple,10

-W option

使用-W选项可以设置一些兼容性选项。以下是一个例子:

假设我们有一个名为fruit.txt的文件,内容如下:

apple,10
orange,5
banana,2

我们可以使用-W traditional选项让awk按照传统的方式执行。在传统模式下,每个输入行可以看作是一个记录,而每个字段以空格分隔,如下:

awk -W traditional "{print $1}" fruit.txt

输出:

apple,10
orange,5
banana,2

总结

本文介绍了Linux系统中的awk命令及其常用选项。通过使用不同的选项,我们可以灵活地处理和分析文本数据。希望这个教程对你学习和理解awk命令有所帮助!

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

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

相关文章

mysql之MyBatis核心工作原理

MyBatis核心工作原理 一、源码环境 1.手动编译源码 工欲善其事必先利其器。为了方便我们在看源码的过程中能够方便的添加注释,我们可以自己来从官网下载源码编译生成对应的Jar包,然后上传到本地maven仓库,再引用这个Jar。大家可以自行去官…

matlab 点云可视化(6)——点云按强度进行可视化

目录 一、功能概述1、算法概述2、主要函数二、代码示例三、结果展示四、参考链接本文由CSDN点云侠原创原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、功能概述 1、算法概述 点云按强度进行可视化 2、主要函数

绿联 安装Uptime Kuma - 一款开源的服务器监控和状态检测工具

Uptime Kuma 功能简介 Uptime Kuma 是一款开源的服务器监控和状态检测工具,它帮助您跟踪服务器的可用性、性能和健康状态。 主要功能: 服务器监控 Uptime Kuma 可以监控多个服务器,包括 Web 服务器、数据库服务器、应用程序服务器等。 它会定…

实验八 大数问题

实验名称:实验八 大数问题 实验目的:熟练掌握大数的加减、乘法、除法和高精度计算。 实验内容: 问题描述:(大数加减)求两个不超过200位的非负整数的和。 输入:有两行,每行是一个…

Antd Vue3 使用 Anchor 锚点组件记录

项目场景 客户要求做一个表单页面&#xff0c;表单数据分为三步&#xff0c;每一步骤是一个单独的 Vue 组件&#xff0c;表单上方需要使用锚点组件实现锚点定位到每一步的功能。 代码总览 <template><div class"guided-form-content-wrapper"><!-- …

初步了解C++

目录 一&#xff1a;什么是C&#xff1f; 二.C发展史 三:C关键字 四&#xff1a;命名空间 4.1命名空间的介绍 4.2命名空间的使用 4.3命名空间的使用 4.3.1使用作用域限定符 4.3.2 使用using将命名空间的某个成员引入 4.3.3使用using把整个命名空间展开 4.4命名空…

每天学习一个Linux命令之scp

每天学习一个Linux命令之scp 在Linux系统中&#xff0c;scp&#xff08;Secure Copy&#xff09;是一个用于在本地主机和远程主机之间进行文件传输的命令行工具。它基于SSH协议&#xff0c;通过加密方式传输文件&#xff0c;确保传输的安全性和完整性。scp命令非常强大且使用简…

【蓝桥杯选拔赛真题50】C++简易炸弹超人 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C简易炸弹超人 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C简易炸弹超人 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 有一块矩形游戏场地&#x…

聊聊k8s服务发现的优缺点

序 本文主要研究一下使用k8s服务发现的优缺点 spring cloud vs kubernetes 这里有张spring cloud与kubernetes的对比&#xff0c;如果将微服务部署到kubernetes上面&#xff0c;二者有不少功能是重复的&#xff0c;可否精简。 这里主要是讲述一下如果不使用独立的服务发现&am…

Linux renice命令教程:如何优雅地调整进程优先级(附案例详解和注意事项)

Linux renice命令介绍 renice命令在Linux中用于修改已经运行的进程的优先级。这个命令允许你改变一个已经运行的进程的调度优先级。如果我们给一个进程设置了更高的优先级&#xff0c;那么内核将为该进程分配更多的CPU时间。 Linux renice命令适用的Linux版本 renice命令在所…

校验器选型参数,结构原理,工艺与注意问题总结

🏡《总目录》 目录 1,概述2,工作原理2.1,数据写入2.2,数据读取2.3,错误检测2.4,错误纠正2.5,错误处理3,结构特点3.1,输入接口3.2,校验规则3.3,错误处理机制3.4,可配置性3.5,性能优化<

css之flex布局文本不换行不显示省略号的解决方法

文章目录 一、单行长文本显示省略号二、flex布局下的处理技巧 一、单行长文本显示省略号 先讲讲常规情况下长文本不跨行显示省略号的代码&#xff1a; overflow: hidden; //不允许内容超出盒子 white-space: nowrap; //不允许文本跨行 text-overflow: ellipsis; //文本超…

SpringMVC注解及使用规则

文章目录 前言一、SpringMVC注解是什么&#xff1f;二、使用步骤1.注解使用2创建JSP3 SpringMVC视图1. 逻辑视图&#xff08;Logical View&#xff09;2. 物理视图&#xff08;Physical View&#xff09;区别和关系 4 SpringMVC注解总结 总结 前言 提示&#xff1a;这里可以添…

建立一个简单的网页音乐盒模型效果#css#h5

“音乐盒”可以看做一个大盒子&#xff0c;用<div>标签进行定义。大盒子的上面为文本内容&#xff0c;可以在<div>标签中嵌套<h2>和<p>标签来实现&#xff1b;大盒子下面为图像&#xff0c;通过在<div>标签中嵌套<img/>标签来实现。 样式…

c语言bit位定义--位域的分配是怎样的? 最先定义的在最低位

//author: hjjdebug //date: 2024年 03月 29日 星期五 14:37:38 CST //c语言bit位定义--位域的分配是怎样的? 最先定义的在最低位 #include <stdio.h> typedef struct { unsigned int is_error : 1; // unsigned int : 29; // 29位不用 unsigned int is_…

RK3588平台开发系列讲解(开发环境搭建)

目录 准备开发环境 安装库和工具集 检查和升级主机的 python 版本 检查和升级主机的 make 版本 检查和升级主机的 lz4 版本 检查和升级主机的 git 版本 准备开发环境 推荐使⽤ Ubuntu 22.04 或更⾼版本的系统进⾏编译。其他的 Linux 版本可能需要对软件包做相应调 整。除…

[Python人工智能] 四十五.命名实体识别 (6)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型(注意力问题探讨)

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解融合Bert的实体识别研究,使用bert4keras和kears包来构建Bert+BiLSTM-CRF模型。这篇文章将详细结合如何利用keras和tensorflow构建基于注意力机制的CNN-BiLSTM-ATT-CRF模型,并实现中文实体识别…

notepad++里安装32位和64位的16进制编辑器Hex-Editor

这个16进制编辑器确实是个好东西&#xff0c;平时工作种会经常用到&#xff0c; 这是hex-editor的官网。这个里边只能下载32位的(64位的看最下边)&#xff0c;选一个合适的版本&#xff0c;我当时选的是最新的版本 https://sourceforge.net/projects/npp-plugins/files/Hex%20E…

android 屏蔽系统通知

1.源码路径: frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java​ 2.NotificationListener类是负责处理监听通知更新并将其传递给向用户显示的NotificationPresenter,也就是SystemUI中监听到系统通知的起点. public class No…

奇偶生成器选型参数,结构原理,工艺与注意问题总结

🏡《总目录》 目录 1,概述2,工作原理2.1,输入数据2.2,奇偶校验位选择2.3,数据处理2.4,输出校验位2.5,错误检测2.6,控制逻辑3,结构特点3.1,输入接口3.2,处理核心3.3,输出接口4,