【linux】文件与目录命令 - awk

news/2025/2/25 8:07:06

文章目录

        • 1. 基本用法
        • 2. 常用参数
        • 3. 用法举例
        • 4. 注意事项

awk 是一款强大的文本处理工具,用于逐行读取文件,根据指定规则对每行内容进行格式化处理和分析。它支持复杂的逻辑运算、正则表达式和条件控制。

1. 基本用法
  • 语法:

    awk [选项] '脚本' 文件
    awk [选项] -f 脚本文件 文件
    
  • 功能:

    • 基于字段对文本数据进行操作,例如过滤、计算、格式化输出等。
  • 此命令是否系统自带:此命令是系统默认自带的,无需额外安装。


2. 常用参数
  • 脚本相关:
    • -f:从指定文件中读取 awk 脚本。
    • -v:定义用户变量,如 -v var=value
  • 输出控制:
    • -F:指定输入文件的字段分隔符(默认是空格或制表符)。
    • --help:显示帮助信息。
    • --version:显示命令版本信息。
  • 内置变量:
    • NR:当前处理的行号。
    • NF:当前行的字段数目。
    • FS:字段分隔符,默认为空格或制表符,可自定义。
    • OFS:输出字段分隔符,默认为空格。
    • RS:记录分隔符,默认为换行符。
    • ORS:输出记录分隔符,默认为换行符。
    • $n:表示当前行的第 n 个字段,例如 $1 表示第一个字段。

3. 用法举例
  • 基本输出
    输出文件的每一行内容:

    awk '{print}' file.txt
    
  • 打印指定字段
    输出文件的第 1 和第 3 列:

    awk '{print $1, $3}' file.txt
    
  • 指定分隔符
    : 分隔字段(如 /etc/passwd 文件):

    awk -F ':' '{print $1, $3}' /etc/passwd
    
  • 条件过滤
    输出第 2 列大于 100 的行:

    awk '$2 > 100 {print $0}' file.txt
    
  • 使用内置变量
    输出行号和每行字段数:

    awk '{print NR, NF}' file.txt
    
  • 统计数据
    计算第 2 列的总和:

    awk '{sum += $2} END {print sum}' file.txt
    
  • 模式匹配
    输出包含 error 的行:

    awk '/error/ {print $0}' file.txt
    
  • 修改分隔符
    将字段用逗号分隔后输出:

    awk 'BEGIN {OFS=","} {print $1, $2}' file.txt
    
  • 复杂脚本
    使用脚本文件处理文本:

    awk -f script.awk file.txt
    

4. 注意事项
  • 默认分隔符为空格,需用 -F 指定其他分隔符。

  • awk 的脚本语言支持复杂逻辑,如条件语句和循环,可用于高级文本处理。

  • 注意 awk 中变量无需声明,直接赋值即可使用。

  • 使用 BEGINEND 块处理全局操作,例如初始化变量或在处理结束后输出汇总结果:

    awk 'BEGIN {print "Start"} {print $0} END {print "End"}' file.txt
    
  • 对于大文件和复杂逻辑,awk 性能优于许多其他文本处理工具。


http://www.niftyadmin.cn/n/5865230.html

相关文章

【LeetCode 热题100】48. 旋转图像以及旋转任意角度的算法思路及python代码

48. 旋转图像 给定一个 n n n n nn 的二维矩阵 m a t r i x matrix matrix 表示一个图像。请你将图像顺时针旋转 90 90 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入&…

【C++设计模式】 单例设计模式:重要常用却并非完美之选

引言 设计模式在软件开发中扮演着至关重要的角色,然而,没有一种设计模式是完美无缺的,单例设计模式便是其中之一。它一直以来都备受争议,有人认为它是解决特定问题的有效方案,也有人觉得它存在诸多弊端。在实际应用中…

第5章 软件工程(一)

5.1 软件工程定义 软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、 提高软件质量、降低软件成本。 5.2 软件需求 软件需求是指用户对系统在功能、行为、性能、设计约束等方面的…

玩转Docker | 使用Docker搭建Vikunja任务管理应用

玩转Docker | 使用Docker搭建Vikunja任务管理应用 前言一、 Vikunja介绍Vikunja 简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Vikunja服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问Vikunja应用注册账号访问Vikunja主页五…

LabVIEW C编译支持工具库CCompileSupp.llb

路径:C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform\CCompileSupp.llb ​ 1. 工具库概述 定位:LabVIEW内置的C语言编译支持工具库,用于处理LabVIEW与C/C代码的混合编程接口,涵盖编译器配置、代码生成…

Go 语言内存池 (`sync.Pool`) 深度解析

Go 语言内存池 (sync.Pool) 深度解析 在高并发和性能敏感的应用中,频繁的内存分配和释放会带来显著的性能开销,并增加垃圾回收(GC)的压力。Go 语言通过 sync.Pool 提供了一种高效的对象复用机制,能够显著减少内存分配…

利用开源小智AI制作桌宠机器狗

本文主要介绍如何利用开源小智AI制作桌宠机器狗 1 源码下载 首先下载小智源码,下载地址, 下载源码后,使用vsCode打开,需要在vscode上安装esp-idf,安装方式请自己解决 2 源码修改 2.1添加机器狗控制代码 在目录main/iot/things下添加dog.cc文件,内容如下; #include…

【NLP】注意力机制

目录 一、认识注意力机制 1.1 常见注意力计算规则 1.2 注意力机制的作用 1.3 注意力机制代码实现 二、注意力机制原理 2.1 attention计算过程 2.2 attention的计算逻辑 2.3 有无attention模型对比 2.3.1 无attention机制的模型 2.3.2 有attention机制的模型 三、Se…