【嵌入式开发 Linux 常用命令系列 7 -- awk 常用方法】

文章目录

    • AWK 功能介绍
    • awk 与 $ 关系
    • awk 与其他命令组合使用
    • awk 常用命令参数

上篇文章:嵌入式开发 Linux 常用命令系列 6 – 字符提取 cut 命令使用
下篇文章:嵌入式开发 Linux 常用命令系列 8 – 二进制转为16进制常用命令

AWK 功能介绍

AWK是一种强大的文本分析工具,最初是由 Aho, Weinberger 和 Kernighan 设计和实现的,AWK 的名称就来源于他们三人的姓氏首字母。在Linux环境下,AWK是处理文本数据的重要工具之一。
以下是AWK的主要功能:

  • 数据抽取:AWK可以抽取文件中的数据并输出到命令行。
  • 数据转换:AWK可以将输入数据转换为用户需要的格式。
  • 报告生成:AWK能够生成格式化的报告,它包含用户选择的特定数据。
  • 数据操作:AWK可以对数据进行各种操作,例如添加,删除,修改等。
  • 文本处理:AWK强大的字符串处理功能使得它在文本分析,数据抽取和报告生成中非常有用。

AWK的使用实例非常多,下面是一些常见的例子:

  • 打印文件的某一列:
    假设我们有一个文本文件(file.txt),内容如下:
apple red 4 
banana yellow 6 
grape purple 10 

如果我们想打印出所有水果的名称,我们可以使用以下命令:

awk '{print $1}' file.txt 

这个命令将打印出第一列的数据:

apple 
banana 
grape
  • 筛选出特定行:
    如果我们想找出所有数量超过5的水果,我们可以使用以下命令:
awk '$3 > 5 {print $0}' file.txt 

这个命令将打印出第三列数值超过5的行:

banana yellow 6 
grape purple 10
  • 计算和:
    如果我们想计算所有水果的总数量,我们可以使用以下命令:
awk '{sum+=$3} END {print sum}' file.txt 

这个命令将打印出所有水果数量的总和:

20

这只是AWK的冰山一角,AWK的功能非常强大,可以处理更复杂的文本处理任务。

awk 与 $ 关系

在 AWK 中,“$” 符号用于引用字段的值。AWK 默认使用空格作为字段分隔符,将每行分割为多个字段,并用 “$” 符号加上字段编号来引用每个字段的值。

例如,“$1” 表示第一个字段,“$2” 表示第二个字段。

这是一个例子:

echo "apple red 4" | awk '{print $1}'

这个命令会输出 “apple”,因为 “$1” 引用了输入行的第一个字段。

另外,“$0” 表示整行的内容。

如果我们想改变字段的分隔符,我们可以使用 “-F” 选项。例如,下面的命令使用冒号作为字段分隔符:

echo "apple:red:4" | awk -F':' '{print $1}'

这个命令会输出 “apple”。

awk 与其他命令组合使用

AWK 可以和许多其他命令一起使用以高效地处理文本数据。这里有几个例子:

  • 使用管道将其他命令的输出作为 AWK 的输入:
ls -l | awk '{print $9}'

这个命令列出了当前目录下所有文件和目录的名字。

  • 将 AWK 的输出作为其他命令的输入:
awk '{print $1}' file.txt | sort 

这个命令打印出 file.txt 的第一列,并将其输出排序。

  • AWK 和 grep 的组合使用:
ps aux | grep 'httpd' | awk '{print $2}' 

这个命令将返回所有 httpd 进程的进程 ID。

  • AWK 和 sed 的组合使用:
echo "apple:red:4" | awk -F':' '{print $2}' | sed 's/red/green/' 

这个命令首先使用 AWK 提取出 “red”,然后用 sed 将其替换为 “green”。

这些只是一些基本示例,实际上 AWK 可以与许多其他 Unix/Linux 命令一起使用,进行复杂的文本处理和数据分析。

awk 常用命令参数

以下是一些与AWK常用的参数及其说明:

  • -F:指定输入字段的分隔符。例如,awk -F: '{print $1}' file 将使用冒号(:)作为字段分隔符。

  • -v:为awk脚本定义变量。例如,awk -v var=value '{print $1, var}' file 将在脚本中定义一个变量var,其值为value。

  • -f:从指定的脚本文件中读取awk命令。例如,awk -f script.awk file 将从script.awk文件中读取awk命令。

下篇文章:嵌入式开发 Linux 常用命令系列 8 – 二进制转为16进制常用命令

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

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

相关文章

自然语言处理从入门到应用——LangChain:模型(Models)-[基础知识]

分类目录:《自然语言处理从入门到应用》总目录 《自然语言处理从入门到应用——LangChain:模型(Models)》部分的文章介绍了LangChain中使用的不同类型的模型。在本文中,我们将阐述模型(Models)类…

LangChain Agents深入剖析及源码解密上(三)

AutoGPT案例V1版本 AutoGPT是一个实验性的开源应用程序,展示了GPT-4语言模型的功能,AutoGPT程序由GPT-4驱动,将大语言模型的思考链接在一起,以自主实现设定的任何目标。作为GPT-4完全自主运行的首批例子之一,AutoGPT突破了人工智能的可能性。LangChain框架复现了https://g…

c#栈应用——实现四则运算

前言:四则运算,大家都不陌生,在上小学的时候,数学中学到过的知识,那么如何在程序中实现呢?下面,我们就用程序来实现9(3-2)*(5-3)/4*3,这个算式的值。计算的时候,有一个规…

MySQL学习笔记 ------ 分页查询

#进阶8:分页查询 ★ /* 应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 【join type join 表2 on 连接条件 where 筛选条件 group by 分组字段 …

搭建基于Nginx+Keepalived的高可用web集群并实现监控告警

目录 搭建相关服务器DNS服务器配置WEB服务器配置配置静态IP编译安装nginx 负载均衡器配置lb1lb2高可用配置 NFS服务器配置配置静态IP安装软件包新建共享目录web服务器挂载 监控服务器配置安装node-exporter编写prometheus.yml安装alertmanager和钉钉插件获取机器人webhook编写a…

Python实战之数据挖掘详解

一、Python数据挖掘 1.1 数据挖掘是什么? 数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,通过算法,找出其中的规律、知识、信息的过程。Python作为一门广泛应用的编程语言,拥有丰富的数据挖掘库&#…

Nginx配置解析

server {listen 80;server_name example.com;location / {proxy_pass http://backend;}location / 是 Nginx 的一个匹配规则,用于匹配所有请求路径。proxy_pass 指令则用于将匹配到的请求转发给指定的后端服务器。下面是关于 location / 和 proxy_pass 的详细介绍&a…

解决嵌入式中QTableWidget双击出现空白QTableWidgetItem输入

目录 所说BUG现象解决方式1方式2全部内容 效果 今天突然想起在上个公司解决的一个BUG 嵌入式中QTableWidget一般只能看数据不能编辑,或者是选择 所以双击出现空白QTableWidgetItem是不允许的 所说BUG现象 解决 在空白的单元格中,添加不可编辑的QTableWid…

动手学深度学习——实战Kaggle比赛:预测房价

导入包,建立字典DATA_HUB包含数据集的url和验证文件完整性的sha-1密钥。定义download()函数用来下载数据集, 将数据集缓存在本地目录(默认情况下为…/data)中, 并返回下载文件的名称。定义download_extract()函数下载并…

数字孪生:未来科技的新前沿

数字孪生作为一项新兴的研究方向,正逐渐成为科技界的焦点。它是将现实世界中的实体、系统或过程通过数字化手段进行建模、仿真和分析,形成与实体相对应的数字化副本。数字孪生的发展为我们带来了无限的想象空间,以及解决现实问题的新途径。 在…

java.net.ConnectException: Connection refused: no further information

报错如下: java.net.ConnectException: Connection refused: no further informationat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_181]at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_181]a…

Zabbix监控安装grafana并配置图形操作

第三阶段基础 时 间:2023年7月20日 参加人:全班人员 内 容: Zabbix监控安装grafana 目录 安装并配置grafana 一、安装Grafana 二、下载安装插件 三、配置grafana 四、Web访问并配置: 安装并配置grafana 一、安装Graf…

【团队协作开发】将Gitee项目导入到本地IDEA中出现根目录不完整的问题解决(已解决)

前言:在团队协作开发过程中,通常我们的Gitee完整项目中会包含很多内容:后端代码、前端代码、项目结构图、项目文档等一系列资产。 将Gitee项目导入到本地IDEA中,通常会出现根目录不完整的问题。这是因为项目里面包含了后端代码、前…

如何使用Webman框架实现日历和事件提醒功能?

如何使用Webman框架实现日历和事件提醒功能? 引言: 在现代社会中,时间管理变得越来越重要。作为开发者,我们可以利用Webman框架来构建一个功能强大的日历应用程序,帮助人们更好地管理自己的时间。本文将介绍如何使用W…

基于Java+SpringBoot+vue前后端分离甘肃非物质文化网站设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

DAY51:动态规划(十五)买卖股票最佳时机Ⅲ+买卖股票最佳时期Ⅳ

文章目录 123.买卖股票最佳时机Ⅲ(注意初始化)思路DP数组含义递推公式初始化遍历顺序最开始的写法:初始化全部写成0debug测试:解答错误,第0天实际上是对应prices[0]和dp[0] 完整版总结 188.买卖股票最佳时机Ⅳ思路DP数…

09.计算机网络——套接字编程

文章目录 网络字节序socket编程socket 常见APIsockaddr结构 UDP编程创建socket绑定socketsendto发送数据recvform接收数据关闭socket TCP编程创建socket绑定socketlisten监听套接字accept服务端接收连接套接字connect客户端连接套接字send发送数据recv接收数据关闭socket 工具n…

【flink】ColumnarRowData

列式存储 在调试flink读取parquet文件时,读出来的数据是ColumnarRowData,由于parquet是列式存储的文件格式,所以需要用一种列式存储的表示方式,ColumnarRowData就是用来表示列式存储的一行数据,它包含多个数组的数据结…

从电商指标洞察到运营归因,只需几句话?AI 数智助理准备好了!

Lily 是名入职不久的电商运营助理,最近她想要根据 2022 年的客单价情况,分析品牌 A 在不同电商渠道的用户行为和表现,并提供一些有价值的洞察和建议给客户。然而在向技术人员提报表需求后,技术人员以需求排满为借口拒绝了。 Lily …

5分钟,结合 LangChain 搭建自己的生成式智能问答系统

伴随大语言模型(LLM,Large Language Model)的涌现,人们发现生成式人工智能在非常多领域具有重要意义,如图像生成,书写文稿,信息搜索等。随着 LLM 场景的多样化,大家希望 LLM 能在垂直…