Linux/Unix awk命令

awk 是一个强大的文本处理工具,它在 Unix 和类 Unix 系统中用于模式扫描和处理语言。awk 能够读取文本文件,并对文件中的数据进行处理。以下是一些基本的 awk 命令用法:

  1. 基本用法

    bash 复制代码
    awk '条件 {动作}' 文件名

    如果条件为真,则执行相应的动作。

  2. 打印特定字段

    bash 复制代码
    awk '{print $1}' 文件名

    打印每行的第一个字段。

  3. 使用字段和变量

    bash 复制代码
    awk '{print $1, $2}' 文件名

    打印每行的第一个和第二个字段。

  4. 使用内置变量

    bash 复制代码
    awk 'NR==1 {print "行数:", NR}' 文件名

    NRawk 的内置变量,代表当前处理的是第几行。

  5. 条件语句

    bash 复制代码
    awk '$1 > 10 {print $1, $2}' 文件名

    如果第一个字段的值大于10,则打印第一个和第二个字段。

  6. 循环

    bash 复制代码
    awk '{for (i=1; i<=NF; i++) print $i}' 文件名

    遍历每行的所有字段并打印。

  7. 模式匹配

    bash 复制代码
    awk '/^Error/ {print $0}' 文件名

    打印包含 "Error" 的行。

  8. 多模式匹配

    bash 复制代码
    awk '/Error/ || /Warning/ {print $0}' 文件名

    打印包含 "Error" 或 "Warning" 的行。

  9. 使用数组

    bash 复制代码
    awk '{arr[$1] += $2} END {for (key in arr) print key, arr[key]}' 文件名

    创建一个数组,将每行的第一个字段作为键,第二个字段作为值,最后打印数组的内容。

  10. 计算总和

    bash 复制代码
    awk '{sum += $1} END {print "总和:", sum}' 文件名

    计算第一字段的总和,并在处理完所有行后打印。

  11. 使用函数

    bash 复制代码
    awk '{print toupper($1)}' 文件名

    使用 toupper 函数将第一个字段转换为大写。

  12. 字段分隔符

    bash 复制代码
    awk -F':' '{print $1}' /etc/passwd

    使用 -F 选项来指定字段分隔符,这里使用冒号 :

  13. 多个awk命令

    bash 复制代码
    awk '{print $1; print $2}' 文件名

    执行多个 awk 命令。

  14. 使用外部变量

    bash 复制代码
    awk -v var="value" '{print var}' 文件名

    使用 -v 选项将外部变量传递给 awk

  15. 打印行号

    bash 复制代码
    awk '{print NR, $0}' 文件名

    打印每行的行号和行内容。

awk 的强大之处在于它能够处理复杂的文本和数据操作,包括模式匹配、字段分割、数组操作等。这些只是 awk 的一些基本用法,实际上 awk 的功能远不止这些,它几乎可以作为一个完整的编程语言来使用。

相关推荐
looking_for__11 小时前
【Linux】应用层自定义协议与序列化
linux·服务器·网络
云中飞鸿11 小时前
VS编写QT程序,如何向linux中移植?
linux·开发语言·qt
嵌入小生00711 小时前
Standard IO -- Continuation of Core Function Interfaces (Embedded Linux)
linux·vim·嵌入式·标准io·vscode
Zach_yuan11 小时前
传输层之TCP/UDP 核心原理全解析:从协议基础到实战机制
linux·网络协议·tcp/ip·udp
独自归家的兔11 小时前
Ubuntu 系统 systemd timers 详解:替代 crontab 的定时任务进阶方案
linux·运维·ubuntu
Lsir10110_11 小时前
【Linux】深入解剖页表——分页式存储
linux·运维·服务器
爱吃生蚝的于勒11 小时前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
fengyehongWorld11 小时前
Linux yq命令
linux·运维·服务器
岁岁种桃花儿11 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步
源文雨11 小时前
shell调用ffmpeg递归转换所有wav至flac的脚本
ffmpeg·bash·音视频·音频·unix·shell·音频编码