自学内容网 自学内容网

day20:三剑客——awk基础

一,概述

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 提供了 ifelsewhilefor 等控制语句来实现复杂的逻辑判断和数据处理。

流程控制

{ if (条件) {动作} else {其他动作} }

循环控制

{ for (i=1; i<=NF; i++) {print $i} }


原文地址:https://blog.csdn.net/qq_62174860/article/details/143606109

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!