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文本处理的主要内容,如果未能解决你的问题,请参考以下文章

文本处理工具awk

linux awk命令的使用

awk文本处理

文本处理工具awk常用命令

文本处理三剑客之gawk

linux命令:awk文本处理命令