基本概念AWK 是一种强大的文本处理工具主要用于对结构化文本数据进行分析和处理。它逐行读取输入文件按字段分割数据并允许用户编写脚本处理这些数据。语法结构AWK 脚本通常由模式和动作组成基本语法如下awk pattern { action } input_file如果省略模式动作会应用到每一行。如果省略动作默认动作是打印匹配的行。常用内置变量$0: 当前行的全部内容$1,$2, ...: 当前行的第1, 2,...个字段NF: 当前行的字段数量NR: 当前处理的行号FS: 输入字段分隔符默认为空格OFS: 输出字段分隔符默认为空格基本用法示例打印文件内容awk {print} file.txt打印特定列awk {print $1, $3} file.txt添加自定义输出awk {print Line, NR, :, $0} file.txt条件处理只处理满足条件的行awk /pattern/ {print $0} file.txt数值比较awk $3 100 {print $1, $3} file.txt字段分隔符指定不同的字段分隔符awk -F, {print $1, $2} csv_file.csv或者使用多个分隔符awk -F[,;] {print $1, $2} file.txt数学运算在 AWK 中执行计算awk {sum $1} END {print sum} numbers.txt计算平均值awk {sum $1; count} END {print sum/count} numbers.txt流程控制使用 if 语句awk {if ($1 50) print $1, is large; else print $1, is small} numbers.txt数组处理使用数组统计词频awk {count[$1]} END {for (word in count) print word, count[word]} words.txt内置函数字符串函数示例awk {print toupper($1), length($1)} file.txt数学函数示例awk {print sqrt($1), log($1)} numbers.txt多文件处理处理多个输入文件awk {print FILENAME, NR, $0} file1.txt file2.txt输出重定向将结果写入文件awk {print output.txt} input.txt按条件输出到不同文件awk {if ($1 50) print large.txt; else print small.txt} numbers.txt实用技巧提取特定行范围awk NR10 NR20 {print} file.txt处理空白行awk NF {print} file.txt统计行数、单词数、字符数awk {chars length($0) 1; words NF} END {print NR, words, chars} file.txt高级用法使用 BEGIN 和 END 块awk BEGIN {print Start Processing} {print $0} END {print End Processing} file.txt定义变量awk BEGIN {FS,; OFS\t} {print $1, $2} file.csv包含外部脚本awk -f script.awk input.txt正则表达式匹配使用正则表达式awk /^[A-Z]/ {print} file.txt反向匹配awk !/pattern/ {print} file.txt