awk的内置函数_awk引用变量

awk的内置函数_awk引用变量awk 系列Part10:如何使用 awk 内置变量

大家好,又见面了,我是你们的朋友全栈君。

awk 系列:如何使用 awk 内置变量

我们将逐渐揭开 awk 功能的神秘面纱,在本节中,我们将介绍 awk 内置(built-in)变量的概念。你可以在 awk 中使用两种类型的变量,它们是:用户自定义(user-defined)变量(我们在第八节中已经介绍了)和内置变量。

awk 系列Part10:如何使用 awk 内置变量

awk 内置变量示例

awk 内置变量已经有预先定义的值了,但我们也可以谨慎地修改这些值,awk 内置变量包括:

  • FILENAME : 当前输入文件名称
  • NR : 当前输入行编号(是指输入行 1,2,3……等)
  • NF : 当前输入行的字段编号
  • OFS : 输出字段分隔符
  • FS : 输入字段分隔符
  • ORS : 输出记录分隔符
  • RS : 输入记录分隔符

让我们继续演示一些使用上述 awk 内置变量的方法:

想要读取当前输入文件的名称,你可以使用 FILENAME 内置变量,如下:

$ awk ' { print FILENAME } ' ~/domains.txt 

awk 系列Part10:如何使用 awk 内置变量

awk FILENAME 变量

你会看到,每一行都会对应输出一次文件名,那是你使用 FILENAME 内置变量时 awk 默认的行为。

我们可以使用 NR 来统计一个输入文件的行数(记录),谨记,它也会计算空行,正如我们将要在下面的例子中看到的那样。

当我们使用 cat 命令查看文件 domains.txt 时,会发现它有 14 行文本和 2 个空行:

$ cat ~/domains.txt

awk 系列Part10:如何使用 awk 内置变量

输出文件内容

$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

awk 系列Part10:如何使用 awk 内置变量

awk 统计行数

想要统计一条记录或一行中的字段数,我们可以像下面那样使用 NR 内置变量:

$ cat ~/names.txt

awk 系列Part10:如何使用 awk 内置变量

列出文件内容

$ awk '{ "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

awk 系列Part10:如何使用 awk 内置变量

awk 统计文件中的字段数

接下来,你也可以使用 FS 内置变量指定一个输入文件分隔符,它会定义 awk 如何将输入行划分成字段。

FS 默认值为“空格”和“制表符”,但我们也能将 FS 值修改为任何字符来让 awk 根据情况切分输入行。

有两种方法可以达到目的:

  • 第一种方法是使用 FS 内置变量
  • 第二种方法是使用 awk 的 -F 选项

来看 Linux 系统上的 /etc/passwd 文件,该文件中的各字段是使用 : 分隔的,因此,当我们想要过滤出某些字段时,可以将 : 指定为新的输入字段分隔符,示例如下:

我们可以使用 -F 选项,如下:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

awk 系列Part10:如何使用 awk 内置变量

awk 过滤密码文件中的各字段

此外,我们也可以利用 FS 内置变量,如下:

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

awk 系列Part10:如何使用 awk 内置变量

使用 awk 过滤文件中的各字段

使用 OFS 内置变量来指定一个用于输出的字段分隔符,它会定义如何使用指定的字符分隔输出字段,示例如下:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

awk 系列Part10:如何使用 awk 内置变量

向文件中的字段添加分隔符

在本节中,我们已经学习了使用含有预定义值的 awk 内置变量的理念。但我们也能够修改这些值,虽然并不推荐这样做,除非你明白自己在做什么,并且充分理解(这些变量值)。

此后,我们将继续学习如何在 awk 命令操作中使用 shell 变量,所以,请继续关注我们。


via: http://www.tecmint.com/awk-built-in-variables-examples/

作者:Aaron Kili
译者:ChrisLeeGit
校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

转载于:https://blog.51cto.com/wutengfei/2402068

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106797.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 将menubar加入_java菜单栏工具栏

    将menubar加入_java菜单栏工具栏importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.EventListener;publicclassTestMenuBarextendsFrame/*implementsActionListener*/{MenuBarmenubar=newMenuBar();Menufi…

    2022年10月25日
    0
  • 视频编码技术详解

    1、引言  如今我们所处的时代,是移动互联网时代,也可以说是视频时代。从快播到抖音,从“三生三世”到“延禧攻略”,我们的生活,被越来越多的视频元素所影响。    而这一切,离不开视频拍摄技术的不断升级,还有视频制作产业的日益强大。    此外,也离不开通信技术的飞速进步。试想一下,如果还是当年的56KModem拨号,或者是2G手机,你还能享受到现在动辄10…

    2022年4月7日
    49
  • 数据分析常见方法及模型分类[通俗易懂]

    数据分析常见方法及模型分类[通俗易懂]今天跟大家分享一下比较常见的数据分析方法以及模型分类。在工作中,有很多的数据分析方法和模型,但是对于新入门的人来说,可能不能够一下子就找到合适的数据分析方法以及模型,进而影响到工作的进度。所以今天小白就来给大家介绍一些比较常见的数据分析方法以及模型的分类。一般来说,我们可以将数据分析方法分为对比分析、相关分析、分类分析以及综合分析四类,其中前三类主要是以定性的数据分析方法和模型为主,而对于…

    2022年5月3日
    57
  • LINUX Shell常用命令

    LINUX Shell常用命令LinuxShell常用shell命令一、文件、目录操作命令1、ls命令功能:显示文件和目录的信息ls 以默认方式显示当前目录文件列表ls-a显示所有文件包括隐藏文件ls-l显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行ls-lh显示文件的大小,以容易理解的格式印出文件大小(例如1K234M2G)ls-lt显示文件,按照修改时…

    2022年5月31日
    49
  • OCR截图文字识别提取(无需安装)「建议收藏」

    OCR截图文字识别提取(无需安装)「建议收藏」本软件无需安装,适用于Windows平台,具有截图,文字提取等功能,亦可用于图片和PDF中文字的识别提取中。目前版本为V3.82。截图文字提取V3.82下载地址如下蓝奏云下载:https://www.lanzous.com/b679733百度网盘下载链接:https://pan.baidu.com/s/1IMY0SWpyKy8uf6o5GTveLw新功能简介:1…

    2022年4月27日
    144
  • 渗透测试工具——SET「建议收藏」

    渗透测试工具——SET「建议收藏」社会工程学使用计谋、假情报或人际关系去获得利益和其他敏感信息。 攻击对象一-一人一-秘密信息的保存者,信息安全链中最薄弱的环节。 利用受害者的本能反应、好奇心、信任、贪婪等心理弱点进行欺骗、伤害。常见的社会工程学攻击方式环境渗透:对特定的环境进行渗透,是社会工程学为了获得所需的情报或敏感信息经常采用的手段之一。社会工程学攻击者通过观察目标对电子邮件的响应速度、重视程度以及可能提供的相关资料,比如一个人的姓名、生日、ID电话号码、管理员的IP地址、邮箱等,通过这些收集信息来判断目标的网

    2022年8月12日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号