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

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 脚本。

相关文章:

  • 【讯为Linux驱动开发】6.自旋锁spinlock
  • 【LeetCode滑动窗口算法】长度最小的子数组 难度:中等
  • ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 探测效果(地图探测、地图窥探)
  • 史上最全盘点:一文告诉你什么是erp?erp系统厂商分别有哪些?
  • 47-3 等保测评报告编写
  • Windows环境下JDK安装及环境变量配置指南
  • 详解 Flink Table API 和 Flink SQL 之时间特性
  • Apache Pulsar 从入门到精通
  • ORACLE中ROWNUM的机制和注意细节(避坑
  • Codeforces Round 952 (Div. 4)
  • 【上海大学计算机组成原理实验报告】七、程序转移机制
  • 网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇你就是网络安全高手了。
  • keil调试过程中遇到的问题及栈分析遇到的问题
  • C++回溯算法
  • 安装Pygame
  • 77. Combinations
  • CentOS6 编译安装 redis-3.2.3
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • express + mock 让前后台并行开发
  • Javascript基础之Array数组API
  • JAVA并发编程--1.基础概念
  • Just for fun——迅速写完快速排序
  • October CMS - 快速入门 9 Images And Galleries
  • 阿里云应用高可用服务公测发布
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 码农张的Bug人生 - 见面之礼
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 首页查询功能的一次实现过程
  • 思否第一天
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • FaaS 的简单实践
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • raise 与 raise ... from 的区别
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​io --- 处理流的核心工具​
  • ###STL(标准模板库)
  • #13 yum、编译安装与sed命令的使用
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #NOIP 2014# day.2 T2 寻找道路
  • #宝哥教你#查看jquery绑定的事件函数
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)平衡树