Linux文本处理三剑客——awk详细用法

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。
awk处理过程: 依次对每一行进行处理,然后输出 。

awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file

[-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
// 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含一条或多条命令
; 多条命令使用分号分隔

awk的特殊符号:
$0:表示整个当前行
$1:每行第一个字段
NF:字段数量变量
NR:每行的记录号,多文件记录递增
FNR:与NR类似,不过多文件记录不递增,每个文件都从1开始
FS:BEGIN时定义分隔符(相当于-F)
RS:输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~:匹配,与==相比不是精确比较
!~:不匹配,不精确比较
==:等于,必须全部相等,精确比较
!=:不等于,精确比较
+:匹配时表示1个或1个以上
OFS:输出字段分隔符, 默认也是空格,可以改为制表符等
ORS:输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕

print:是awk打印指定内容的主要命令(标准化输出)
printf:格式化输出

下面举几个例子,能更便于理解!!!
1、

这里是通过awk把/etc/passwd 中的用户名拿到,其中 ‘{}‘ 是固定格式。
-F: 是选定以:作为分隔符,如果是以空格作为分隔符,则直接默认不用写。

2、

这个例子则是把/etc/passwd下的gid和uid拿出来。printf是格式化输出,默认不会换行,而其中的“\n”和“\t”则是换行及有一个table键的距离。

3、

这个例子中NR是指行号,但$NR是默认每一行的结尾的那个字符段。$0是匹配的整行。

4、

这是BEGIN以及END的格式及应用,其中的{FS=":"}和-F:是相同的。后面打印的this are usernames,在最后一行打印。

5、

这是通过给X赋值的方式,来寻找/etc/fstab中的空行数。

6、

这个例子是计算uid的总和

7、

在awk中可以使用if判断和for循环,其中<(小于)、>(大于)、>=(大于等于)

8、

是通过~进行匹配,只匹配以lpp或者root开头的行数

9、

uid和gid的和如果大于二百输出

10、

其中是查看空闲内存,并把以Kb为单位换算为Mb为单位。

原文地址:https://blog.51cto.com/14239093/2389448

时间: 2024-10-10 03:29:44

Linux文本处理三剑客——awk详细用法的相关文章

linux文本处理三剑客——awk

一.awk简介 Aho, Weinberger, Kernighan三人联合开发的 报告生成器,格式化文本输出 有多种版本:New awk(nawk),GNU awk( gawk) linux上主流版本:gawk – 模式扫描和处理语言 二.gawk基本用法 awk [options] 'program' var=value file- awk [options] -f programfile var=value file- awk [options]  'BEGIN{ action;- } p

Linux文本处理三剑客awk (二)

  前一篇文章分享了awk的一些基本概念和用法,这篇分享的是awk的一些高级用法.在学习awk的过程中,对比我之前学过的C语言,我发现awk里的while,for,case等语法和C语言里的语法是完全一样的.毕竟awk创始人之一布莱恩·威尔森·柯林汉与C语言的创始人丹尼斯·里奇共同写作了C语言的第一本著作<C程序设计语言>. 一.awk action 常用的action分类 ? (1) Expressions:算术,比较表达式等 ? (2) Control statements:if, whi

linux文本处理三剑客命令及用法

grep:文本过滤工具 功能说明: sed :字符流编辑器 功能说明: awk : 原文地址:https://www.cnblogs.com/dongxu2019/p/11567086.html

linux文本处理三剑客之grep

  一.linux文本处理三剑客介绍 linux中文本三剑客包括grep(egrep,fgrep),sed,awk,三者基本的功能如下: 工具名称 功能 grep,egrep,fgrep 文本过滤工具(搜索工具) sed stream editor, 流编辑器:文本编辑工具 awk 文本报告生成器 二.grep工具详解 1.grep的介绍: grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行

Linux文本处理三剑客之grep一族与正则表达式

一,grep一族是什么? Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.这三者被称为Linux文本处理三剑客. grep一族:文本搜索工具 grep:支持使用基本正则表达式: egrep:支持使用扩展正则表达式,相当于grep -E: fgrep:不支持使用正则表达式,相当于grep -F; [PS:fgrep不需要加载正则表达式引擎,因此速度较快,fgrep的搜索效率在当文件达到几亿行时就能体现出来.(大型web网站一天的日志量都是几亿行的,

linux文本处理三剑客—grep

cat:concatenate 文本文件查看工具 cat [option] filename... -n:给显示出来的文本行加上编号 -b:非空行编号 -V:显示 ^ -E:显示行结束符$ -T:显示制表符 -A:显示所有控制符-A=-VET -s:压缩连续的空行成一行 如:cat /etc/fstab /etc/passwd 同时查看多个文件 df | cut -d: tac:文本文件查看工具 用法同cat 只是文件内容的行逆序显示 rec:文本文件查看工具    用法同cat 只是文本文件每

Linux 文本处理三剑客之grep

文本处理都要使用正则表达式,正则表达式有: 基本正则表达式:grep或者egrep -G 扩展正则表达式:egreo或者grep -E Linux 文本处理三剑客: sed:stream editor,流编辑工具程序. awk:linux上是gawk,格式化文本工具程序. grep:Global search Regular expression and print out the line 使用基本正则表达式的命令: grep egrep -G fgrep -G 使用扩展正则表达式的命令: g

Linux文本处理&quot;三剑客&quot;--grep

稍微接触过linux都会知道有三个非常强大文本处理工具,那就是grep.sed和awk,想必都有听说过吧. Linux文本处理三剑客: grep, egrep, fgrep:文本过滤工具(模式:pattern): grep:基本正则表达式,支持-E,-F egrep:扩展正则表达式, 支持-G,-F fgrep:不支持正则表达式, sed:stream editor, 流编辑器:文本编辑工具: awk:Linux上的实现为gawk,文本报告生成器(格式化文本): 以上三款工具都支持正则表达式 正

AWK详细用法

awk非常的优秀,运行效率高,而且代码简单,对格式化的文本处理能力超强.基本上grep和sed能干的活awk全部都能干,而且干得更好. 先来一个很爽的例子:文件a,统计文件a的第一列中是浮点数的行的浮点数的平均值.用awk来实现只需要一句话就可以搞定(当然,这个东东用python也可以很轻松的实现,只是无论如何都得新建一个文件:别妄想用bash shell来做,那可是浮点数!!!)$cat a1.021 331#.ll   442.53 6ss    7awk 'BEGIN{total = 0;