百度
360搜索
搜狗搜索

linuxgawk命令详解详细介绍

Linux
gawk 命令详解(GNU Awk)

1. 简介

gawk 是 GNU 版本的 awk,是一款强大的文本处理工具,主要用于模式扫描与文本转换。它通过读取输入(文件或标准输入),根据指定的模式(Pattern)匹配行,并对匹配的行执行动作(Action),支持变量、函数、流程控制等编程特性,广泛用于日志分析、数据提取、报表生成等场景。

2. 基本语法

bash

 选项  输入文件

脚本文件.awk 输入文件

3. 常用选项

选项 说明
-F, --field-separator FS 指定字段分隔符(默认是空格或制表符),如 -F, 表示逗号分隔。
-v var=value 定义用户变量,在脚本中直接使用。
-f file 从文件中读取 gawk 脚本。
-i file 加载库文件(GNU 扩展功能)。
-m[fr] val 设置内存限制(GNU 扩展,如 -mfree 1024m)。
-O, --optimize 优化脚本执行(GNU 扩展)。
-W, --help 显示帮助信息。

4. 内置变量(预定义变量)

变量 说明
$0 当前处理的整行内容。
$1, $2, ..., $n 第 1 个、第 2 个、… 第 n 个字段(字段由 FS 分隔)。
FS 输入字段分隔符(默认是空格或制表符),可动态修改(如 FS=",")。
OFS 输出字段分隔符(默认是空格),用于控制 print 输出的字段间隔。
NF 当前行的字段总数(Number of Fields)。
NR 已处理的行号(从 1 开始,针对所有输入文件)。
FNR 当前文件中的行号(针对多文件输入时,每个文件独立计数)。
RS 输入记录分隔符(默认是换行符 \n,即一行一条记录)。
ORS 输出记录分隔符(默认是换行符 \n)。
ARGC 命令行参数个数。
ARGV 命令行参数数组(ARGV[0] 是程序名,ARGV[1] 起是输入文件等)。

5. 模式(Pattern)

模式用于筛选需要处理的行,常见类型:

5.1 空模式(默认匹配所有行)

bash

  文件.txt  

5.2 正则表达式匹配

  • ~ 表示匹配,!~ 表示不匹配。bash
      日志.log  

    数据.csv

5.3 条件表达式

bash

  数据.txt  

文件.txt

5.4 行号范围

bash

  文件.txt  

文件.txt

5.5 BEGIN/END 块

  • BEGIN:在处理所有输入行执行一次(用于初始化)。
  • END:在处理所有输入行执行一次(用于汇总)。bash
      数据.csv

6. 动作(Action)

动作是对匹配行执行的操作,由一系列语句组成,用 {} 包裹。

6.1 基本操作

  • 打印字段
    bash
      文件.txt  

    数据.txt

  • 修改字段分隔符
    bash
      /etc/passwd  

6.2 变量与运算

  • 用户变量
    bash
        文件.txt  

    数据.txt

  • 算术运算+-*/%(取余)、^(幂运算)。

  • 逻辑运算&&(与)、||(或)、!(非)。

  • 字符串拼接:直接用空格或 "" 连接,如 str = "hello" "world"

6.3 流程控制

  • 条件语句(if-else)
    bash
      成绩.txt

  • 循环(for/while/do-while)
    bash
      文件.txt  

6.4 数组(Associative Array)

  • 用于存储键值对,键可以是字符串或数字。bash
      数据.txt

6.5 函数

  • 字符串函数

    函数 说明
    length(str) 返回字符串长度(默认处理 $0)。
    sub(re, repl[, str]) 替换字符串中第一个匹配的正则表达式 rerepl(默认处理 $0)。
    gsub(re, repl[, str]) 替换字符串中所有匹配的正则表达式 rerepl
    index(str, substr) 返回子串 substrstr 中的位置(从 1 开始,0 表示未找到)。
    split(str, arr[, fs]) 按分隔符 fs(默认空格)分割 str 到数组 arr,返回字段数。

    bash

      数据.txt  

    日期.txt

  • 数学函数
    sqrt(x)(平方根)、rand()(0-1 随机数)、int(x)(取整)、abs(x)(绝对值)等。

  • 其他函数
    system("命令")(执行系统命令)、exit([n])(退出并返回状态码 n)。

7. 实战示例

7.1 处理 CSV 文件

bash

-F, 成绩.csv

7.2 统计日志访问次数

bash

访问日志.log

7.3 替换文本

bash

文本文件.txt

文本文件.txt

7.4 生成报表

bash

成绩表.csv

8. 编写 gawk 脚本

将多个命令保存到文件(如 script.awk):
awk

FS

OFS

NR

total

total

执行脚本:
bash

 +x script.awk

./script.awk 数据.csv

9. 注意事项

  1. 字段分隔符:若字段包含空格,需用 -F 显式指定分隔符(如制表符 \t 或正则表达式)。
  2. 正则表达式:使用 /正则表达式/ 时,特殊字符需转义(如 \. 表示点号)。
  3. 性能:处理大文件时,优先使用内置函数和简洁语法,避免不必要的循环。
  4. GNU 扩展gawk 支持更多功能(如 --re-interval 匹配重复次数),但需注意与传统 awk 的兼容性。

10. 更多资源

  • 官方文档:man gawk 或 GNU Awk 文档
  • 在线练习:通过处理日志、CSV 等真实数据巩固用法。

通过灵活组合模式、动作和内置功能,gawk 能高效完成文本处理任务,是 Linux 系统管理和数据处理的必备工具之一。

阅读更多 >>>  EXCEL使用技巧大全:输入的技巧

网站数据信息

"linuxgawk命令详解"浏览人数已经达到23次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linuxgawk命令详解的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!