如何在Linux中使用awk命令

  介绍

这篇文章给大家介绍如何在Linux中使用awk命令,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>一、awk命令简介

awk被称为文本处理三剑客之一,其名称得自于它的创始人阿尔弗雷德·霍彼得·温伯格和Brian Kernighan姓氏的首个字母。实际上awk的确拥有自己的语言:awk程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件,为数据排序,处理数据,对输入执行计算以及生成报表,还有无数其他的功能。
所以说awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

<强>二,awk命令格式及选项

语法形式

awk[选项]& # 39;脚本# 39;var=值文件
awk[选项]- f scriptfile var=值文件(s)

常用命令选项

- f fs fs指定输入分隔符,fs可以是字符串或正则表达式,如- f:
- v var=值赋值一个用户定义变量,将外部变量传递给awk
- f scripfile从脚本文件中读取awk命令
- m[法文]val对val值设置内在限制,mf选项限制分配给val的最大块数目;-选项限制记录的最大数目。这两个功能是贝尔实验室版awk的扩展功能,在标准awk中不适用。

<强>三,awk的原理

<代码> awk & # 39;开始{命令}}{命令模式结束{命令}& # 39;

第一步:执行开始}{命令语句块中的语句;
第二步:从文件或标准输入(stdin)读取一行,然后执行模式}{命令语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。
第三步:当读至输入流末尾时,执行结束}{命令语句块。
开始语句块在awk开始从输入流中读取行之前被执行,这是一个可选的语句块,比如变量初始化,打印输出表格的表头等语句通常可以写在开始语句块中。

结束语句块在awk从输入流中读取完所有的行之后即被执行,比如打印所有行的分析结果这类信息汇总都是在目的语句块中完成,它也是一个可选语句块。

模式语句块中的通用命令是最重要的部分,它也是可选的。如果没有提供模式语句块,则默认执行{打印},即打印每一个读取到的行,awk读取的每一行都会执行该语句块。

四,awk基本用法

awk的调用有三种方式

1。命令行方式

<代码> awk [- f字段分隔符]& # 39;命令# 39;输入文件(s)

其中,命令是真正awk命令,[- f域分隔符)是可选的。输入文件(s)是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名- f域分隔符的情况下,默认的域分隔符是空格。

2。shell脚本方式

<代码> awk & # 39;开始{打印“时}}{命令模式结束{打印“以何种;}& # 39;代码文件

一个awk脚本通常由:开始语句块,能够使用模式匹配的通用语句块,结尾语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被单引号或双引号中,例如:

awk  & # 39;开始{,i=0}, {, i++}, {, print 小姐:}结束& # 39;文件名   awk “开始{,i=0}, {, i++}, {, print 小姐:}结束“,文件名

3。将所有的awk命令插入一个单独文件,然后调用

awk - f awk-script-file输入文件(s)

其中,- f选项加载awk-script-file中的awk脚本,输入文件(s)跟上面的命令行方式是一样的。
我们通过几个简单的示例来进一步了解awk的用法

[root@localhost  ~] #, awk  & # 39; {print  $ 0} & # 39;,/etc/passwd    根:x: 0时:根:根://bin/bash   本:x: 1:1:本:/bin:/sbin/nologin   守护进程:x: 2:2:守护进程:/sbin/sbin/nologin   adm: x: 3:4: adm:/var/adm/sbin/nologin   lp: x: 4: lp:/var/spool/lpd:/sbin/nologin   同步:x: 5:0:同步:/sbin:/bin/同步   关闭:x: 6:0:关闭/sbin:/sbin/关闭   停止:x: 7:0:停止/sbin:/sbin/停止   .........................................................................   (root@localhost  ~) #, echo  123 | awk  & # 39; {print “你好,awk"} & # 39;   你好,awk      (root@localhost  ~) #, awk  & # 39; {print “hi"} & # 39;/etc/passwd   嗨   嗨   嗨   嗨   嗨   嗨   嗨   嗨   嗨   .........................................................................

如何在Linux中使用awk命令