美文网首页
Linux中的部分awk命令 2019-11-18

Linux中的部分awk命令 2019-11-18

作者: vicLeo | 来源:发表于2019-11-18 17:10 被阅读0次

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 

AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

调用awk

有三种方式调用awk

1.命令行方式:awk [-F  field-separator] 'commands' input-file(s)

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。

在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

2.shell脚本方式

将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。

相当于shell脚本首行的:#!/bin/sh可以换成:#!/bin/awk

3.将所有的awk命令插入一个单独文件,然后调用:awk -f awk-script-file input-file(s)

其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

awk脚本

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

关于awk脚本,我们需要注意两个关键词BEGIN和END。

BEGIN{ 这里面放的是执行前的语句 }

END {这里面放的是处理完所有的行后要执行的语句 }

{这里面放的是处理每一行时要执行的语句}

实例

假设last -n 5的输出如下

[root@www ~]#last -n5 <== 仅取出前五行

root    pts/1 192.168.1.100    Tue  Feb  10 11:21  still logged in 

root    pts/1 192.168.1.100    Tue   Feb 10 00:46-02:28(01:41)

root    pts/1 192.168.1.100    Mon  Feb  9  11:41-18:30(06:48)

dmtsai  pts/1 192.168.1.100  Mon  Feb  9  11:41-11:41(00:00)

root    tty1                               Fri     Sep  5  14:09-14:10(00:01)

如果只是显示最近登录的5个帐号

#last -n 5 | awk '{print $1}'

root

root

root

dmtsai

root

awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。

awk内置变量

awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

ARGC              命令行参数个数

ARGV              命令行参数排列

ENVIRON            支持队列中系统环境变量的使用

FILENAME          awk浏览的文件名

FNR                浏览文件的记录数

FS                设置输入域分隔符,等价于命令行 -F选项

NF                浏览记录的域的个数

NR                已读的记录数

OFS                输出域分隔符

ORS                输出记录分隔符

RS                控制记录分隔符

相关文章

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • Linux中的部分awk命令 2019-11-18

    awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU...

  • awk命令

    下文来自:美团 吴孟达更多AWK命令请参考:Linux awk 命令扩展:linux sort,uniq,cut,...

  • awk的用法

    一、awk命令用法 在Linux中,awk 即 gawk , awk的二进制文件为gawk的链接文件; ...

  • Linux | awk

    参考:http://www.runoob.com/linux/linux-comm-awk.html awk命令的...

  • Linux 学习笔记(十四):Linux 正则表达式基础

    grep 命令 作为linux中最为常用的三大文本(awk(Linux awk教程),sed(Linux sed教...

  • Linux的awk命令

    Linux的awk命令 众所周知awk命令是Linux一个非常重要又难以掌握的命令,下面对这个命令进行一个详细的说...

  • AWK 命令详解

    AWK 命令详解 除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk。...

  • Linux常用命令总结

    Linux常用命令指南 @Date 2017.05.23 tail awk awk ' pattern {acti...

  • Linux处理文本的三驾马车—awk命令常用功能

    Linux处理文本的第三驾马车—awk命令 AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最...

网友评论

      本文标题:Linux中的部分awk命令 2019-11-18

      本文链接:https://www.haomeiwen.com/subject/hsybictx.html