【linux】(7)文本分析awk

awk 用于分析、过滤和生成报告。

基本用法

awk 'pattern {action}' filename

常用选项

  1. -F:指定字段分隔符

    awk -F',' '{print $1}' filename
    

    例子:使用逗号作为字段分隔符,并打印第一列。

  2. -v:定义变量

    awk -v var=value 'BEGIN {print var}'
    

    例子:定义变量并在 BEGIN 块中使用。

  3. -f:从文件中读取 awk 脚本

    awk -f script.awk filename
    

基本操作

打印文本
  1. 打印整行

    awk '{print}' filename
    

    例子:打印文件 example.txt 的所有行。

  2. 打印指定字段

    awk '{print $1, $2}' filename
    

    例子:打印文件 example.txt 的第一列和第二列。

  3. 添加文本

    awk '{print "Line:", $0}' filename
    

    例子:在每行前添加 Line:

过滤文本
  1. 根据模式过滤行

    awk '/pattern/' filename
    

    例子:打印包含 hello 的行。

    awk '/hello/' example.txt
    
  2. 根据字段值过滤行

    awk '$1 > 100' filename
    

    例子:打印第一列大于 100 的行。

    awk '$1 > 100' example.txt
    
内置变量
  1. $0:表示整行
  2. $1, $2, ...:表示第 1 列、第 2 列,依此类推
  3. NR:表示行号
  4. NF:表示字段数
  5. FS:字段分隔符
  6. OFS:输出字段分隔符

高级操作

计算和统计
  1. 求和

    awk '{sum += $1} END {print sum}' filename
    

    例子:计算第一列的和。

    awk '{sum += $1} END {print sum}' example.txt
    
  2. 计数

    awk 'END {print NR}' filename
    

    例子:统计行数。

    awk 'END {print NR}' example.txt
    
条件语句
  1. if 语句

    awk '{if ($1 > 100) print $1}' filename
    

    例子:打印第一列大于 100 的值。

    awk '{if ($1 > 100) print $1}' example.txt
    
  2. if-else 语句

    awk '{if ($1 > 100) print $1; else print "less"}' filename
    

    例子:打印第一列大于 100 的值,否则打印 less

    awk '{if ($1 > 100) print $1; else print "less"}' example.txt
    
循环
  1. for 循环
    awk '{for (i = 1; i <= NF; i++) print $i}' filename
    
    例子:打印每行的每个字段。
    awk '{for (i = 1; i <= NF; i++) print $i}' example.txt
    
内置函数
  1. 字符串长度

    awk '{print length($1)}' filename
    

    例子:打印第一列的字符串长度。

    awk '{print length($1)}' example.txt
    
  2. 子字符串

    awk '{print substr($1, 1, 3)}' filename
    

    例子:打印第一列的前 3 个字符。

    awk '{print substr($1, 1, 3)}' example.txt
    
  3. 正则表达式匹配

    awk '$1 ~ /^[0-9]+$/' filename
    

    例子:打印第一列是数字的行。

    awk '$1 ~ /^[0-9]+$/' example.txt
    

综合示例

  1. 处理 CSV 文件

    awk -F',' '{print $1, $2}' filename.csv
    

    例子:打印 CSV 文件的第一列和第二列。

    awk -F',' '{print $1, $2}' example.csv
    
  2. 统计字段出现次数

    awk '{count[$1]++} END {for (word in count) print word, count[word]}' filename
    

    例子:统计第一列中每个值出现的次数。

    awk '{count[$1]++} END {for (word in count) print word, count[word]}' example.txt
    
  3. 多条件过滤

    awk '$1 > 100 && $2 < 50' filename
    

    例子:打印第一列大于 100 且第二列小于 50 的行。

    awk '$1 > 100 && $2 < 50' example.txt
    

从文件读取 awk 脚本

可以将 awk 脚本存储在文件中,然后使用 -f 选项从文件中读取。

  1. 脚本文件 script.awk 内容

    {print $1, $2}
    
  2. 执行脚本

    awk -f script.awk filename
    

使用 awk 处理多行输出

  1. 搜索多行模式

    awk '/start_pattern/,/end_pattern/' filename
    
  2. 与其他命令结合使用

    grep 'pattern' filename | awk '{print $1}'
    
    ps aux | awk '{print $1, $2}'
    

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

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

相关文章

分享5款让大家电脑更好用的软件

​ 电脑是我们日常生活和工作中不可缺少的工具&#xff0c;今天给大家推荐了五款让电脑更好用的软件。 1.系统清理——CCleaner ​ CCleaner是一款系统优化和隐私保护工具&#xff0c;可以清理无用文件、浏览器缓存、回收站内容等&#xff0c;释放磁盘空间&#xff0c;提升系…

【linux网络(二)】网络基础之套接字编程

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. 端口号详…

2024下半年软考中级系统集成项目管理师应该如何备考?

2024年软考系统集成项目管理工程师安排在下半年考试&#xff0c;今天跟大家分享一下软考中级系统集成项目管理师的考试备考规划。 报考要求 系统集成项目管理师考试报名没有任何学历、年龄、职业等条件的限制&#xff0c;只要年满18岁就可以报名。 适合人群 各政府部门及事…

任何成为一名优秀的AI产品经理,看完这篇就懂了

&#xff08;背景:之前做AI咨询&#xff0c;对接公司内部AI产品经理经理&#xff0c;外部也对接过很多甲方AI产品经理。后来出来也拿过好几家公司AI产品经理的offer&#xff09; 1.AI产品经理是什么 回答这个问题前我们首先得理清楚什么是AI产品经理&#xff0c;它和传统的互…

JavaLambda表达式 - 操作数组

在Java中&#xff0c;Lambda表达式通常与函数式接口一起使用&#xff0c;以便能够以更简洁的方式表示函数或操作。然而&#xff0c;Java的数组本身并不直接支持Lambda表达式&#xff0c;因为数组是原生数据类型&#xff08;对于基本类型数组&#xff09;或对象的固定大小的集合…

nginx安装和配置ModSecurity

ModSecurity 是一个开放源代码的 Web 应用防火墙 (WAF)&#xff0c;可以帮助保护 Web 服务器免受各种攻击。以下是如何在 Nginx 上安装和配置 ModSecurity 的详细步骤。 一. 安装 ModSecurity &#xff08;1&#xff09;. 安装依赖 在安装 ModSecurity 之前&#xff0c;需要先…

半导体光电子学最后总结(3)光子晶体

Matrix theory 波传输矩阵 (Wave-Transfer Matrix) 散射矩阵 (Scattering Matrix) 光在均匀介质中的传播公式矩阵化 Relation between Scattering Matrix and Wave-Transfer Matrix 级联系统的投射/反射系数&#xff1a;艾里公式 (Airy Formulas) 无损对称系统 斜入射波的传输…

❤vue2项目webpack打包的优化策略

❤ vue2项目webpack打包的优化策略 &#xff08;优化前&#xff09; 现在我们的打包时间为&#xff1a; >打包体积大小为&#xff1a; 1、去除开发环境和生产环境提示以及日志 开发环境和生产环境的打印处理 生产环境去除console.log打印的两种方式 通过环境变量控制co…

终成大流:CDM+AI彻底重塑数据备份市场

进入2024年&#xff0c;CDM市场又迎来高光时刻。 先有Cohesity上演“蛇吞象”并购Veritas数据备份与数据管理业务&#xff0c;并在新一轮融资中获得IBM、NVIDIA两大巨头的战略投资&#xff1b;后有Rubrik获得资本市场认可&#xff0c;以64亿美元市值成功登陆纽交所。两大CDM明…

[Unity学习] 背景视差因子计算,远近背景移动距离差

public Camera cam;public Transform trans;Vector2 startPosiotion;float startZ;//此物距离trans的z距离private float zDistance > transform.position.z - trans.transform.position.z;void Start(){startPosiotion transform.position;startZ transform.position.z;}…

免费!快速!干货!手把手教你如何在个人电脑上搭建你自己的大模型服务!

大模型发展如火如荼&#xff0c;虽然大模型的能力强大&#xff0c;但是大模型也是非常昂贵的&#xff01;不管是训练还是推理&#xff0c;都需要耗费大量的机器&#xff0c;而且机器的硬件资源&#xff0c;比如GPU、TPU等都有一定的要求。 因此&#xff0c;业界的同行们&#x…

docker——环境搭建

准备知识 一、Docker官方架构 ​ docker使用C/S架构模式&#xff1b; ​ Docker 仓库(Registry) ​ Docker 仓库用来保存镜像&#xff0c;可以理解为代码控制中的代码仓库。Docker Hub 供了庞大的镜像集合供使用。 ​ Docker daemon ​ Docker daemon 是服务器组件&#…

Lua搭建网站后台教程

本文讲解如何使用二进制发布包和FastWeb网站管理工具搭建站点 FastWeb网站管理工具 使用该工具可快速在Windows平台部署。支持官方或三方模块的自动安装、日志调试、版本更新等。 1、下载最新版本压缩包 2、解压到任意目录(建议英文) 3、运行 ①点击 [设置]->[安装] 部…

DEV-C++小游戏吃星星(1.5)

吃星星1.5版导航 ★★★★★ 吃星星&#xff08;1.5&#xff09;★★★★★ ★★★★该版本简介更新说明★★★★ ★★★分部代码★★★ ★头文件命名空间变量★ ★★结构体★★ ★辅助结构体★ ★角色结构体★ ★星星结构体★ ★打印结构体★ ★加载中结构体★ ★游…

macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载

macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接&#xff1a;https://sysin.org/blog/macOS-Sequoia-boot-iso/&#xff0c;查看最新版…

[手游] 三色绘恋S Mobile Link

语音合成TTS: 文字转成语音的工具 WPS免登录一键修改器: 去除烦人的登录且能正常使用 故事简介&#xff1a; 深秋的雨季即将到来&#xff0c;正值那个为人所熟知的故事发生的前一年—— 地点&#xff1a;湖北省的重点高中&#xff0c;武汉师贰高校。 新学年开始&#xff0c;各…

LeetCode | 2879.显示前三行

在 pandas 中&#xff0c;可以使用 head() 方法来读取 DataFrame 的前几行数据。如果想读取指定数量的行&#xff0c;可以在 head() 方法中传入一个参数 n&#xff0c;读取前 n 行 import pandas as pddef selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:retur…

前沿重器[49] | 聊聊搜索系统2:常见架构

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

分布式高性能计算 (HPC)的工作负载管理平台和作业调度程序—— IBM Spectrum® LSF® Suites

IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用&#xff0c;该功能可在 IBM Cloud 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案&#xff0…

弘君资本股市资讯:增逾20倍!百亿细分龙头利好来了

5月以来&#xff0c;A股进入了时间短的成绩发表空档期&#xff0c;而百亿化工细分龙头齐翔腾达&#xff0c;则以一份高增的成绩预告&#xff0c;摆开半年报成绩预告发表序幕。 6月10日晚间&#xff0c;齐翔腾达发表的成绩预告显现&#xff0c;上半年估计完成归母净赢利1.3亿元…