一,概述
AWK 是一种用于处理文本和数据的编程语言,特别擅长用于处理格式化文本文件。它通过将输入数据分成字段,逐行进行处理,广泛应用于数据分析、文本处理和系统管理中。
二,使用方式
命令模式(重点)
AWK 可以直接在命令行中运行,适合执行一些简短的文本处理任务。基本格式如下:
awk 【选项】 '条件 {动作}' 文件名
-F:定义字段的分隔符,默认空格
-v:定义变量并赋值
awk -F : '{print $1,$3,$NF}' a.txt 如果分隔符为默认的空格的话就不要写-F了
脚本模式(了解)
复杂的 AWK 程序可以写入一个脚本文件,通过 -f 选项执行。
awk -f script.awk 文件名
三,工作原理
AWK 的工作原理是逐行读取文件,将每行内容分割成字段,并根据指定的条件进行相应的操作。它通常分为三大块:
- BEGIN:在处理文件内容前执行的语句。
- 主体:逐行处理数据。
- END:在处理文件内容后执行的语句。
四,内部变量(重点)
AWK 提供了一些内置的内部变量,用于控制和访问数据:
-  $0:当前行的内容。
-  
-  $1、$2…:当前行的第一个、第二个字段
-  $NF:当前行的最后列 
-  
-  NF:当前行的字段数。
-  
-  NR:当前处理的行数。
-  
-  FS:字段分隔符(默认为空格)命令行中使用-F 符号 形式或者放到{内}。-  在 AWK 中, FS应在BEGIN块中设置,或者直接通过-F参数设置,这样才能在文件读取前生效。
-   
 
-  
-  OFS:输出字段分隔符(默认空格)放到{OFS="分隔符"} 
-  
-  RS:记录分隔符(默认为换行符)。
-  
五,自定义变量
六,begin-end语法(重点)
语法
BEGIN { 初始化代码 }
{ 主体代码 }
END { 收尾代码 }
七,awk结合正则表达式(重要)
AWK 可以结合正则表达式来进行复杂的数据匹配。例如,匹配以特定字符开头的行或包含特定模式的字段。
awk '/正则表达式/ {动作}' 文件名
算术运算符
+:加法,例如x + y
-:减法,例如x - y
*:乘法,例如x * y
/:除法,例如x / y
%:取模,例如x % y
++和--:自增和自减,适用于变量,例如x++和--y
比较运算符
用于比较两个值,常用在条件判断中:
==:等于,例如$1 == 10
!=:不等于,例如$2 != "text"
>和<:大于和小于,例如$3 > 5
>=和<=:大于等于和小于等于
逻辑运算符
用于组合条件:
&&:逻辑与(AND),当两个条件都为真时返回真。
awk '$1 > 10 && $2 < 20 {print $0}' file.txt
||:逻辑或(OR),当至少一个条件为真时返回真。
awk '$1 > 50 || $2 < 5 {print $0}' file.txt
!:逻辑非(NOT),将条件的真假性取反。
awk '!/error/ {print $0}' file.txt
正则运算符
~:匹配运算符,用于检测字段是否符合某个正则表达式。
awk '$1 ~ /^[A-Z]/ {print $0}' file.txt # 第一个字段以大写字母开头
!~:不匹配运算符,检测字段是否不符合某个正则表达式。
awk '$1 !~ /error/ {print $0}' file.txt # 第一个字段不包含 "error"
八,流程控制
AWK 提供了 if、else、while、for 等控制语句来实现复杂的逻辑判断和数据处理。
流程控制
{ if (条件) {动作} else {其他动作} }
循环控制
{ for (i=1; i<=NF; i++) {print $i} }







