暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Awk命令学习总结

原创 数巨小码人 2024-12-20
123

 


1. 概述

grep、awk、sed被誉为linux“三剑客”,使用它们可以很好地处理文件。它们的侧重点又各有不同。其中,grep擅长查找功能,sed擅长取行和替换,awk擅长取列。本文重点介绍awk命令。

2. awk的语法

有三种方式可以调用awk:

1. awk [-F 域分隔符] ‘command’input-file(s)

[-F 域分隔符] 是可选的,使用其可以指定域分隔符,默认域分隔符为空格。如果需要指定域分隔符为:,则用如下命令:

awk –F: ‘command’input-file(s)

2. 将所有的awk命令放入一个文件中,赋予其可执行权限,然后用awk命令解释器作为脚本首行,以便通过键入脚本名称来调用。

3. 将所有awk命令放入一个文件中,然后调用:

awk –f awk-script-file input-file(s)

-f指明文件awk-script-file中的awk脚本,input-file(s)是使用awk进行浏览的文件名

任何awk语句都由模式和动作组成,模式决定awk语句何时触发以及触发事件,可以是任何条件语句或复合语句或正则表达式,模式包括两个特殊的字段BEGIN和END,使用BEGIN可以设置计数和打印头,END可以打印输出文本总数和结尾状态标志;动作即对数据进行的操作,实际动作均需要在 {} 内指明。举例如下,

Grade.txt文件内容为:

编辑

使用下述命令可以打印头和结尾状态:

awk 'BEGIN {print "Name\t Belt\n------------"} {print $1"\t"$4} END {print "over"}' grade.txt

编辑

3. 域和记录

awk执行时,其浏览域标记为$1,$2,…,$n,这种方法称为域标识。使用$1和$3表示第1域和第3域,可以理解为文件的第一列和第3列,若想表示所有域,可以使用$0,如上述文件内容中共有7个域,分别为名字、升段日期、学生序号、腰带级别、年龄、目前比赛积分、比赛最高分。

4. awk的使用

1)awk '{print $0}' grade.txt    打印所有记录

2)awk '{print $0}' grade.txt>wow 打印所有记录并保存到wow文件内,不在屏幕显示

3)awk '{print $0}' grade.txt | tee wow 打印所有记录到屏幕并保存到wow文件

4)awk '{print $1,$4}' grade.txt  打印第一列和第4列,注意加逗号分隔域

5. awk正则表达式及其操作

awk中正则表达式要用斜线 // 括起来。例如,模式串为green,应该使用/green/。awk中的操作符有:

操作

描述

<

小于

>

大于

<=

小于等于

>=

大于等于

==

等于/精确匹配

!=

不等于

~

匹配

!~

不匹配

1)查询第4域匹配Brown的记录 awk '{if($4~/Brown/) print $0}' grade.txt

2)查询记录中匹配Brown的记录   awk '$0~/Brown/' grade.txt

3)精准匹配  awk '$3=="48" {print $0}' grade.txt

4)查询第3域匹配48的记录   awk '{if($3~/48/) print $0}' grade.txt

5)不匹配   awk '$0!~/Brown/ {print $0}' grade.txt

6)只对第4域进行不匹配操作  awk '{if($4!~/Brown/) print $0}' grade.txt

7)大小写匹配    awk '/[Gg]reen/' grade.txt

8)或关系匹配   awk '$0~/(Yellow | Brown)/' grade.txt

9)打印记录,满足多个条件 &&

 awk '{if($1=="P.Bunny" && $4=="Yellow") print $0}' grade.txt

10)打印记录,多个条件中满足一个即可 ||

awk '{if($4=="Yellow" || $4~/Brown/) print $0}' grade.txt

  

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论