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

Linux/Unix awk命令

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

  1. 基本用法

    awk '条件 {动作}' 文件名
    

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

  2. 打印特定字段

    awk '{print $1}' 文件名
    

    打印每行的第一个字段。

  3. 使用字段和变量

    awk '{print $1, $2}' 文件名
    

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

  4. 使用内置变量

    awk 'NR==1 {print "行数:", NR}' 文件名
    

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

  5. 条件语句

    awk '$1 > 10 {print $1, $2}' 文件名
    

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

  6. 循环

    awk '{for (i=1; i<=NF; i++) print $i}' 文件名
    

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

  7. 模式匹配

    awk '/^Error/ {print $0}' 文件名
    

    打印包含 “Error” 的行。

  8. 多模式匹配

    awk '/Error/ || /Warning/ {print $0}' 文件名
    

    打印包含 “Error” 或 “Warning” 的行。

  9. 使用数组

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

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

  10. 计算总和

    awk '{sum += $1} END {print "总和:", sum}' 文件名
    

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

  11. 使用函数

    awk '{print toupper($1)}' 文件名
    

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

  12. 字段分隔符

    awk -F':' '{print $1}' /etc/passwd
    

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

  13. 多个awk命令

    awk '{print $1; print $2}' 文件名
    

    执行多个 awk 命令。

  14. 使用外部变量

    awk -v var="value" '{print var}' 文件名
    

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

  15. 打印行号

    awk '{print NR, $0}' 文件名
    

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

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


http://www.kler.cn/a/380055.html

相关文章:

  • ICPC区域赛成都站【赛后回顾+总结】
  • Swift 开发教程系列 - 第3章:控制流
  • 在Mac下安装时间序列软件Hector
  • 视频去水印怎么办?两种方法教会你
  • pycharm调用方法时显示为灰色
  • 「C/C++」C++设计模式 之 抽象工厂模式(Abstract Factory)
  • [极客大挑战 2019]BabySQL 1
  • 开源数据库 - mysql - innodb源码阅读 - master线程(一)
  • 24.11.4 OpenCV 图像滤波 卷积核概念 图像平滑处理 图像边缘处理 图像边缘检测 图像形态学操作 学习笔记
  • OpenAI + asyncio 异步调用
  • MoonBit 双周报 Vol.59:新增编译器常量支持,改进未使用警告,支持跨包函数导入...多个关键技术持续优化中!
  • python NLTK快速入门
  • 计算机网络:网络层 —— 移动 IP 技术
  • 力扣904-水果成篮-两种思路
  • 【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导入hive、将hive数据导入mysql)
  • 思科路由器静态路由配置
  • 讲讲⾼并发的原则?
  • 从 vue 源码看问题 — vue 初始化都做了什么事?
  • CentOS Linux教程(11)--查看文件
  • RK3229 Android9自定义一个按键实现长按短按
  • 鸿蒙next字符串基础:掌握字符串操作与多语言支持
  • 如何选择最适合的消息队列?详解 Kafka、RocketMQ、RabbitMQ 的使用场景
  • Seelen UI 界面介绍与苹果界面类似
  • 易泊车牌识别相机:夜间识别的卓越之选
  • 【大语言模型】ACL2024论文-04 PriveLM-Bench: 语言模型多层次隐私评估基准
  • Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用