linux-awk分析指令

目录

基本用法:

条件语句:

内置变量:

自定义分隔符:

数学运算:

使用多个文件:

生成“完整使用报告”的示例:

8. 模式匹配

9. BEGIN和END模式

10. 数组和关联数组

11. 脚本方式使用

12. 逐行处理

13. 控制语句


awk 是一个强大的文本处理工具,用于在文本文件中执行模式扫描和文本/数据提取。下面我将为您展示一些 awk 的基本用法和示例,以及如何使用它来生成一个“完整使用报告”。但请注意,由于“完整使用报告”是一个相对模糊的概念,我将为您提供一系列常见的 awk 用法示例。

  1. 基本用法:

    • 打印文件中的所有内容:
    awk '{print}' filename
    • 打印文件的第一列:
     
    awk '{print $1}' filename
    • 打印文件的第一行:
     
    awk 'NR==1 {print}' filename
    • 打印文件的最后一行:
     
    awk 'END {print}' filename
  2. 条件语句:

    • 打印文件中大于10的数字所在的行:
     
    awk '$1>10' filename
    • 如果第一列大于10,则打印第一列和第二列:
     
    awk '$1>10 {print $1, $2}' filename
  3. 内置变量:

    • 打印文件的行数:
     
    awk 'END {print NR}' filename
    • 打印每行的字段数量:
     
    awk '{print NF}' filename
  4. 自定义分隔符:

    • 使用冒号 : 作为字段分隔符,并打印第一列:
     
    awk -F: '{print $1}' filename
  5. 数学运算:

    • 计算第一列和第二列的和,并打印结果:
     
    awk '{sum=$1+$2; print sum}' filename
  6. 使用多个文件:

    • 假设我们有两个文件 file1.txt 和 file2.txt,我们想要打印两个文件中都有的行(基于整行内容):
     
    awk 'FNR==NR{a[$0];next} $0 in a' file1.txt file2.txt

    生成“完整使用报告”的示例:

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

 
ProductID,ProductName,QuantitySold,Price
1,Apple,10,2.5
2,Banana,20,1.2
3,Cherry,5,3.8

我们可以使用 awk 来生成一个“销售报告”,例如:

 
awk -F, 'NR>1 {print "Product:", $2, "sold", $3, "units at", $4, "per unit, total:", $3*$4}' sales.txt

输出:

Product: Apple sold 10 units at 2.5 per unit, total: 25
Product: Banana sold 20 units at 1.2 per unit, total: 24
Product: Cherry sold 5 units at 3.8 per unit, total: 19


8. 模式匹配

  • 正则表达式awk 支持强大的正则表达式和模式匹配功能。

awk '/pattern/{print}' data.txt # 打印匹配pattern的行

9. BEGIN和END模式

  • BEGIN:在处理任何输入文件之前执行。

  • END:在所有输入文件都被处理完后执行。

 
awk -F: 'BEGIN {print "Username\tShell"} {print $1"\t"$7} END {print "blue\t/bin/nosh"}' /etc/passwd

10. 数组和关联数组

  • 定义数组:使用 数组名[下标] = 元素值 的格式定义数组。
  • 遍历数组:使用 for(变量 in 数组名) 遍历数组。

11. 脚本方式使用

  • 将所有的 awk 命令插入一个文件,并使 awk 程序可执行,然后通过键入脚本名称来调用。

  • 使用 -f 选项加载 awk 脚本文件。

 
awk -f awk-script-file input-file(s)

12. 逐行处理

  • awk 最适合逐行处理文本文件,按行分割的文本数据是 awk 的主要应用场景。

13. 控制语句

  • awk 支持分支结构(单分支、双分支、多分支)、循环结构(while、do-while、for)以及其他控制语句(如中断、退出等)。

这只是一个简单的示例来展示如何使用 awk 来处理文本文件和生成报告。您可以根据自己的需求进一步定制 awk 脚本。

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

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

相关文章

路虽远,行则将至 - 附暑期实习、秋招历程经验分享

前言 大家好 许久没有时间静下心来打开编辑器写文章了 忙碌暂过,难得一闲时 求学三年,终到离别时 回忆过往,枯燥且多彩 有一点经验,以文字形式分享,希望帮助到大家 可能是这段时间事多且杂,加上很长一…

电脑桌面上用来记事的便签软件

便签软件已成为我们日常生活中不可或缺的记录工具。想象一下,在繁忙的工作中,你突然需要记下一个重要事项或临时想法,这时,一个便捷、高效的便签软件就显得尤为重要。它能帮助我们迅速捕捉信息,轻松管理琐碎事务&#…

LINUX 安装JAVA

安装上传下载 yum -y install lrzsz 建存放目录 mkdir /source mkdir /source/java 进入目录,拖拉上传JDK 解压 tar -zxvf jdk-8u261-linux-x64.tar.gz 配置 vi /etc/profile 在末尾添加以下配置 export JAVA_HOME/source/java/jdk1.8.0_261 export JRE…

通信设备的网卡

一、网卡的作用 将计算机或者路由器连接到传输介质上的接口,传输介质可以是有线也可以是无线的。 (1)计算机的网卡 现在的计算机大多有两个网卡,一个是有线网卡一个无线网卡,比如以我们的台式电脑为例 台式电脑千兆网…

【氵】Archlinux+KDE Plasma 6+Wayland 安装nvidia驱动 / 开启HDR

参考: NVIDIA - Arch Linux 中文维基 (其实就是把 wiki 简化了一下 注:本教程适用 GeForce 930 起、10 系至 20 系、 Quadro / Tesla / Tegra K-系列以及更新的显卡(NV110 以及更新的显卡家族),此处以 RTX3060 为例 …

Scikit-learn 基础教程:机器学习的初步指南

Scikit-learn 是一个用于数据挖掘和数据分析的机器学习库,建立在 NumPy、SciPy 和 matplotlib 之上。它提供了简单而高效的工具来进行数据分析和建模。本文将为您介绍 Scikit-learn 的安装方法、核心组件,以及如何应用这些组件进行一个简单的机器学习项目…

Pytorch--Convolution Layers

文章目录 1.nn.Conv1d2.torch.nn.Conv2d()3.torch.nn.ConvTranspose1d()3.torch.nn.ConvTranspose2d() 1.nn.Conv1d torch.nn.Conv1d() 是 PyTorch 中用于定义一维卷积层的类。一维卷积层常用于处理时间序列数据或具有一维结构的数据。 构造函数 torch.nn.Conv1d() 的语法如…

边缘计算(Edge Computing)_关键概念/优势/应用场景

边缘计算(Edge Computing)是一种计算范式,它将数据处理和分析从传统的集中式数据中心和云计算平台移至更接近数据生成源头的位置(即“边缘”),例如物联网设备、传感器、路由器或其他边缘设备。边缘计算旨在…

vector迭代器失效

1.迭代器失效的根本原因 迭代器就是指针,迭代器失效就是指针失效。 指针失效的有两种情况: 1)野指针 2)访问越界 2.举例阐述 这段代码已经报错了,我给大家调试一下。可以发现:vector的容量变大了&…

C语言之main函数的返回值(在linux中执行shell脚本并且获取返回值)

一:函数为什么要返回值 (1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是函数的输出 (2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)…

springbot 界面美观的超市收银管理系统。

springbot 界面美观的超市收银管理系统。 功能:登录,用户管理,权限菜单管理,首页订单,收入,用户统计, 收银台,销售账单,库存管理,商品分类,供应…

30 岁的程序员,要有 “归零“ 心态

大家好,我是码农先森。 古话说的 “三十而立”,正是担重之时,却大部分人在职场中都处于不上不下的尴尬境地。已经没有刚毕业时那股子冲劲,被生活和工作磨平了棱角。 在技术思想方面,似乎已经触及到了天花板&#xff…

嵌入式系统中判断大小端的方法与实现

第一:大小端基本分析 程序判断计算机是大端的还是小端的,判断的思路是确定一个多字节的值(下面使用的是4字节的整数),将其写入内存(即赋值给一个变量),然后用指针取其首地址所对应的字节(即低地址的一个字节),判断该字…

shell循环以及实验

循环是一种重复执行的代码结构,只要满足循环的条件,会一直执行这个代码 循环条件:在一定范围之内,按照指定次数来执行循环。 循环体:在指定的次数内,执行的命令序列,只要条件满足,…

C#知识|模块化分层学习笔记

哈喽,你好,我是雷工! 01 基本分层 典型的两层结构:由UI层 数据访问层 实体类构成。 其中实体类不算一层,本质是一个数据载体。 02 模块化分层 模块概念:在.NET平台中,模块主要是指类库项目。…

Mac下载了docker,在终端使用docker命令时用不了

问题:在mac使用docker的时候,拉取docker镜像失败 原因:docker是需要用app使用的 ,所以在使用的时候必须打开这个桌面端软件才可以在终端上使用docker命令!!!

网络安全和信息安全

概述 信息安全、网络安全与网络空间安全是当前信息技术领域内的三个重要概念,它们在某些方面有着紧密的联系,同时在不同的语境和应用场景下又有所区别。本次分析旨在深入理解这三个概念的定义、内涵及其相互关系,以便更好地应用于实际工作中…

latex 新技巧:公式过长怎么编号美观? 如何缩小公式大小,不改编号大小?

常见的公式换行,用到 aligned align等命令 但是如何单独用align,可以默认编号在最短的一行,但是有个缺点,需要手动地将其他行 加上 \nonumber,以防每一行都有编号 \begin{align}\label{eq1} & Line 1 \\ & L…

Spring系统学习 -Spring IOC 的XML管理Bean之P命名空间、实现引入MySQL外部链接属性文件

P命名空间 在Spring框架中&#xff0c;P命名空间是一种用于简化XML配置文件中属性注入的方式。通过引入P命名空间&#xff0c;可以使用更简洁的语法来设置bean的属性值&#xff0c;而无需显式地使用<property>子元素。这使得XML配置文件更加简洁和易于阅读。 要在Sprin…

shell条件测试和if语句

“C:\Users\Jessica\Desktop\6.12.assets\image-20240612094159578.png”# shell条件测试和if语句 一、条件测试 1、$? 返回码 判断命令或者脚本是否执行成功&#xff08;最近的一条&#xff09; 0 true 为真就是成功 成立 非0 false 失败或者异常 2、test命令 可以进行…