跳到主要内容

[toc]

awk简介

awk 维基百科

awk gnu

awk文本处理

  • 逐行读取文本

    • awk以(records)为单位,从文件或标准输入读取文本
  • 拆分字段

    • 默认情况下,awk空格或制表符作为分隔符,将每行拆成多个字段
  • 执行操作

    • 对匹配的行进行操作,包括修改、计算、格式化输出等
  • 输出结果

语法格式

awk option 'pattern {action}' file

  • pattern 匹配模式
  • action 处理动作,针对符合匹配模式的数据进行的处理动作,
    • 如果没有 pattern ,只有 action ,会对所有文本执行 action 的处理动作
    • 如果没有 action,只有 pattern ,会打印出符合匹配模式的行

选项

-F 指定字段分隔符

示例:取出IP地址

说明

[ ]+ 表示分隔符是连续的空格

ifconfig eth0 | awk -F'[ ]+' 'NR==2{print $3}'

-v 创建或修改awk中的变量

说明

创建一个变量并输出,只在awk中生效,且awk中输出变量不需要加 $ 符号

注意

-v 必须与后边的大括号紧挨

$ awk -v{n1=10,n2=20} 'BEGIN{print n1,n2}'
10 20

-t 从文件读取 awk 脚本

示例:awk从外部文件加载awk脚本并处理输入文件

script.awk 内容如下

# 打印标题
BEGIN { print "Name Age" }

# 处理每一行
{ print $1, $2 }

# 结束时打印总结
END { print "Processing Done." }

input.txt 内容如下

Alice 25
Bob 30
Charlie 22

执行

$ awk -f script.awk input.txt
Name Age
Alice 25
Bob 30
Charlie 22
Processing Done.
Right Bottom Gif
Right Top GIF