Linux 文本处理工具——awk

awk

awk被设计用于文本处理,通常被用来做数据提取报告工具工作,可以看作一种解释性程序设计语言。典型应用就是将文本数据转换成格式化的报表,所有这些操作的关键前提是数据拥有某种结构,当数据拥有某种结构时,才能最好体现awk的价值

awk中的程序和大部分其他语言程序不同,awk是数据驱动的,而其他大部分语言是过程化的,意会一下即可。

简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。注意,awk不能处理非文本文件,比如,二进制可执行文件等,如有需要,可以使用类似emacs中的hexlmode等二进制编辑器 to do it。

命令格式

awk [OPTIONS] [--] program-text file ...
awk [OPTIONS] -f program-file [--] file ...

一个awk命令行由选项awk程序文件或指令输入文件名组成。每条指令指定一个用于搜索的模式和一个模式匹配时要执行的动作。即 awk指令=模式+动作。

// awk 中,花括号用来将指令块集合在一起
pattern { action }    // 每条指令之间用换行符来分隔
pattern { action }
...

简单来看,awk 命令使用方法   : awk '{pattern + action}' {filenames}

尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。

常用选项

-F                        指定分隔符

-v var=value       指定一个值value给变量var

-f                        指定一个awk程序文件

语法

awk 的 BEGIN 和 END 块

awk使用正则表达式

awk的表达式和块

awk的条件语句

awk中的变量和操作符

awk中的特殊变量

        FS、NF、NR、$0、$1 ...

awk中的循环结构

awk中的数组

awk下的数组索引从1开始,不是从0开始。

当awk遇到第一个赋值时,数组被创建。

awk循环数组索引时,并不遵循特定的顺序。

awk_help

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:		GNU long options: (standard)
	-f progfile		--file=progfile
	-F fs			--field-separator=fs
	-v var=val		--assign=var=val
Short options:		GNU long options: (extensions)
	-b			--characters-as-bytes
	-c			--traditional
	-C			--copyright
	-d[file]		--dump-variables[=file]
	-e 'program-text'	--source='program-text'
	-E file			--exec=file
	-g			--gen-pot
	-h			--help
	-L [fatal]		--lint[=fatal]
	-n			--non-decimal-data
	-N			--use-lc-numeric
	-O			--optimize
	-p[file]		--profile[=file]
	-P			--posix
	-r			--re-interval
	-S			--sandbox
	-t			--lint-old
	-V			--version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
	gawk '{ sum += $1 }; END { print sum }' file
	gawk -F: '{ print $1 }' /etc/passwd

参考:Linux awk命令详解 - 小a玖拾柒 - 博客园

Have Fun

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值