awk文本处理
awk
- 简介
- 基本语法
- 变量
- 进阶
简介
awk是一门编程语言,报告生成器,格式化文本输出
awk命名来自Aho, Weinberger, Kernighan三位大佬名字首字母缩写
awk多版本版本: awk、nawk、gawk,未作特别说明,一般指gawk,gawk是AWK的GNU版本
基本语法
原理
awk的运行原理将一行一行的文本作为输入,通过指定的域、行分隔符筛选数据,并对筛选到的数据进行定制化处理
语法
awk [选项] 'program' var=value file...
awk [选项] -f program file var=value file...
awk [选项] 'BEGIN{action;...}' pattern {action;...}END{action;...} file...
概念
- 记录
- 域
- 分隔符
- 变量
记录:一行标准输入、文件的一行都可以看做为一条记录
域:也叫做列,一个记录可能会有很多列,通常awk将空格或者
分隔符:域、记录都有分隔符,同时也区分输入分隔符和输出分隔符
选项
- -F 指定输入域分隔符
- -v 指定变量
- -f 指定脚本文件
-F 域分隔符选项
只打印用户名
awk -F: '{print $1}' /etc/passwd
-v 变量
自定义变量、内置变量
自定义变量
打印userName和uid,并用|分割
awk -F: -v var="|" '{print $1var$3}' /etc/passwd
awk -F: -v var="|" '{print $1var$3}' /etc/passwd
自定义变量区分大小写
awk -F: -v OFS=" | " -v var="var" -v Var='Var' '{print $1,var,$3,Var}' /etc/passwd
内置变量
- FS 输入域分隔符,默认为空白字符
- OFS 输出域分隔符,默认为空白字符
- RS 输入记录分隔符
- ORS 输出记录分隔符
FS
通过内置变量FS指定输入域分隔符
awk -F: '{print $1,$3,$7}' /etc/passwd
awk -v FS=':' '{print $1,FS,$3}' /etc/passwd
OFS
通过内置变量OFS指定输出域分隔符
awk -v FS=':' -v OFS='|' '{print $1,$3}' /etc/passwd
RS
通过内置变量RS指定输入记录分隔符
head -n 1 /etc/passwd | awk -v RS=':' '{print $1}'
ORS
通过内置变量ORS指定输出记录分隔符
head -n 1 /etc/passwd | awk -v RS=':' -v ORS='|' '{print $0}'
-f
将常用awk命令格式放入到文件中来引用
cat f.awk
{print $1,$3}
awk -v FS=':' -v OFS='|' -f f.awk /etc/passwd
进阶
更多参考PDF文档

浙公网安备 33010602011771号