awk文本处理
Posted pli8421
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 域分隔符选项
只打印用户名
awk -F: '{print $1}' /etc/passwd
-v 变量
自定义变量、内置变量
自定义变量
打印userName和uid,并用|分割
awk -F: -v var="|" '{print $1var$3}' /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 $1OFS$3}' /etc/passwd
RS
通过内置变量RS指定输入记录分隔符
以上是关于awk文本处理的主要内容,如果未能解决你的问题,请参考以下文章