Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本

0 前言

在编写Linux Shell脚本的过程中,我们经常要对Linux命令执行的结果进行分析和提取,Linux也在文本分析和提取这方面提供了不少的命令。比如我们之前研究过的cut命令。

Linux shell编程学习笔记43:cut命令icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/135730679?spm=1001.2014.3001.5501

除了cut命令,我们还需要继续研究其他相关的命令。

今天我们先研究 awk命令。

1 awk命令的由来

AWK 命令是取了三位创建人  Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 姓氏(Family Name) 的首字符来构成。

实际上 AWK 拥有自己的程序设计语言 ——“样式扫描和处理语言”,这种语言允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

2 awk命令的功能、格式和选项说明

我们可以使用 awk --help命令查看 awk 命令的帮助信息。

purpleEndurer @ bash ~ $ awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:          GNU long options: (standard)
        -f progfile             --file=pro

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
        gawk '{ sum += $1 }; END { print sum }' file
        gawk -F: '{ print $1 }' /etc/passwd

purpleEndurer @ bash ~ $ 

2.1 awk命令的功能

awk是处理文本文件的一个应用程序,它依次处理文件的每一行,并读取里面的每一个字段。

对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。

2.2 awk命令的格式

awk [选项] -f 脚本文件 [--] 文件 ...

 或

awk [选项] [--] '程序' 文件 ...

2.3 awk命令的选项

POSIX 选项GNU 长选项: (标准 )功能备注
-f progfile--file=progfile

从脚本文件中读取awk程序源代码,而不是从第一个 非选项 参数中读取。此选项可以多次给出;AWK 程序由每个指定源文件的内容串联组成。

以 -f 命名的文件被视为开头有“@namespace ”awk“。
-F fs--field-separator=fs指定输入文件折分符,fs是一个字符串或者是一个正则表达式,如-F
-v var=val--assign=var=val在程序开始执行之前,将变量 var 设置为值 val

此类变量值在 BEGIN 规则中可用。

使用 -v 设置内置变量的值可能会导致令人惊讶的结果。AWK 将根据需要重置这些变量的值,可能会忽略您可能给出的任何初始值。

短选项GNU长选项: (扩展)功能
-b--characters-as-bytes

使 gawk 将所有输入数据视为单字节字符。此外,所有使用 print 或 printf 写入的输出都被视为单字节字符。

通常,gawk 遵循 POSIX 标准,并尝试根据当前语言环境处理其输入数据。这通常涉及将多字节字符转换为宽字符(内部),如果输入数据不包含有效的多字节字符,则可能会导致问题或混淆。此选项是告诉 gawk “放开我的数据!“

-c--traditional指定兼容模式,在该模式下,禁用 awk 语言的 GNU 扩展,以便 gawk 的行为与 BWK 一样
-C--copyright打印版权信息
-d[file]--dump-variables[=file]

将全局变量、其类型和最终值的排序列表打印到文件中。如果未提供任何文件,此列表将打印到当前目录中名为 awkvars.out 的文件中。

如果提供了 file,则 -d 和 file 之间不允许有空格。

-e 'program-text'--source='program-text'

使用program-text作为源代码,可与-f命令混用。

此选项允许您将文件中的源代码与您在命令行中输入的源代码混合使用。

当您要从命令行程序使用的库函数时,这特别有用

-E file--exec=file

与 -f 类似,从文件中读取 awk 程序文本。

与 -f 有两个区别:

此选项终止选项处理;命令行上的任何其他内容都直接传递给 AWK 程序。
不允许使用“var=value”形式的命令行变量赋值。

对于通过 URL 传递参数的万维网 CGI 应用程序,此选项尤其必要。用此选项可防止恶意(或其他)用户将选项、分配或 awk 源代码(通过 -e)传递给 CGI 应用程序。

 此选项应与 '#!' 脚本一起使用(请参阅可执行 awk 程序),如下所示:

#!/usr/local/bin/gawk -E

-g--gen-pot分析源程序,并在标准输出上为所有标记为翻译的字符串常量生成一个 GNU gettext 可移植对象模板文件
-h--help显示帮助信息
-L [fatal]--lint[=fatal]

警告可疑或不可移植到其他 awk 实现的构造。如果提供了值,则 -L 和值之间不允许有空格。当 gawk 第一次读取您的程序时,会发出一些警告。其他的则在运行时发出,因为程序正在执行。

-n--non-decimal-data

启用输入数据中八进制和十六进制值的自动解释。

注意:此选项可能会严重破坏旧程序。请小心使用。另请注意,此选项可能会在 gawk 的未来版本中消失。

-O--optimize

启用 gawk 对程序内部表示的默认优化。目前,这仅包括简单的恒定折叠。

默认情况下,优化处于启用状态。此选项主要用于向后兼容。但是,它可用于取消早期 -s 选项的效果(请参阅此列表的后面部分)。

-p[file]--profile[=file]

启用 awk 程序的分析。

暗示 --no-optimize。默认情况下,配置文件在名为 awkprof.out 的文件中创建。可选的 file 参数允许您为配置文件指定不同的文件名。如果提供了 file,则 -p 和 file 之间不允许有空格。

配置文件在左边距包含程序中每个语句的执行计数,以及每个函数的函数调用计数。

-P--posix打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符和=不能代替^和^=;fflush无效。
-r--re-interval允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-S--sandbox禁用 system() 函数、使用 getline 的输入重定向、使用 print 和 printf 的输出重定向以及动态扩展。此外,不允许向 ARGV 添加 gawk 开始运行时不存在的文件名。当您想要从可疑来源运行 awk 脚本并需要确保脚本无法访问您的系统(指定的输入数据文件除外)时,这特别有用。
-t--lint-old打印关于不能向传统unix平台移植的结构的警告。
-V--version打印版本信息。

2.4 其它说明

几乎所有 Linux 系统都自带awk这个程序。

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

3 awk命令基本用法使用实例

3.1 awk -C:打印版权信息

purpleEndurer @ bash ~ $ awk -C
Copyright (C) 1989, 1991-2012 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
purpleEndurer @ bash ~ $ 

3.2 awk -V:打印版本信息

purpleEndurer @ bash ~ $ awk -V
GNU Awk 4.0.2
Copyright (C) 1989, 1991-2012 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
purpleEndurer @ bash ~ $ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/310124.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最全excel导入功能测试用例设计(以项目为例)

web系统关于excel的导入导出功能是很常见的,通常为了提高用户的工作效率,在维护系统中的一些数据的时候,批量导入往往比一个一个添加或者修改快很多。针对导入功能的测试,往往会有很多种情况,现在针对平时项目中遇到的…

Excel·VBA二维数组S形排列

与之前的文章《ExcelVBA螺旋数组函数》将一维数组转为二维螺旋数组 本文将数组转为S形排列的二维数组,类似考场座位S形顺序 Function S形排列(ByVal arr, ByVal num_rows&, ByVal num_cols&, Optional ByVal mode$ "row")将数组arr转为num_rows…

Home Assistant OS转 Hassio Supervisor(docker 版本)

这是一个失败案例,请忽略。 原因 HAOS缺点:系统不是很好用,无法满足我在上面使用python开发插件的小需求(或许有方法满足,但是我没找到)。 HAOS优点:方便安装,配置非常方便。 数据…

UE5学习日记——实现自定义输入及监听输入,组合出不同的按键输入~

UE5的自定义按键和UE4有所不同,在这里记录一下。 本文主要是记录如何设置UE5的自定义按键,重点是学会原理,实际开发时结合实际情况操作。 输入映射 1. 创建输入操作 输入操作并不是具体的按键映射,而是按键的激活方式&#xff0…

面试官:说一说CyclicBarrier的妙用!我:这个没用过...

写在开头 面试官:同学,AQS的原理知道吗? 我:学过一点,抽象队列同步器,Java中很多同步工具都是基于它的… 面试官:好的,那其中CyclicBarrier学过吗?讲一讲它的妙用吧 我&…

音乐文件逆向破解

背景 网易云等在线音乐文件的加密源码都按照一定的规则加密,通过对音乐文件的源码分析转化,有望实现对加密文件的解密 实现内容 实现对加密音乐文件的解密 实现对无版权的音乐文件的转化 实现环境 010editor 010 Editor是一个专业的文本编辑器和十六…

FFmpeg: 自实现ijkplayer播放器--04消息队列设计

文章目录 播放器状态转换图播放器状态对应的消息: 消息对象消息队列消息队列api插入消息获取消息初始化消息插入消息加锁初始化消息设置消息参数消息队列初始化清空消息销毁消息启动消息队列终止消息队列删除消息 消息队列,用于发送,设置播放…

破译验证码reCAPTCHA 之 打码平台

由于登录需要验证码,除了日常的字符串+数字,此时就需要用第三方插件进行破译。 reCaptcha是Google公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点。 1. reCAPTCHA 初识 reCaptcha是Google公司…

1、IPEX-LLM(原名BigDL-LLM)环境配置

IPEX-LLM 是一个为Intel XPU (包括CPU和GPU) 打造的轻量级大语言模型加速库,在Intel平台上具有广泛的模型支持、最低的延迟和最小的内存占用。 您可以使用 IPEX-LLM 运行任何 PyTorch 模型(例如 HuggingFace transformers 模型)。在运行过程中…

结合创新!ResNet+Transformer,高性能低参数,准确率达99.12%

今天给各位介绍一个发表高质量论文的好方向:ResNet结合Transformer。 ResNet因其深层结构和残差连接,能够有效地从图像中提取出丰富的局部特征。同时,Transformer的自注意力机制能够捕捉图像中的长距离依赖关系,为模型提供全局上…

世界需要和平--中介者模式

1.1 世界需要和平 "你想呀,国与国之间的关系,就类似于不同的对象与对象之间的关系,这就要求对象之间需要知道其他所有对象,尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低…

MySQL中的存储过程详解(上篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法,看完代码自己敲一遍,十分有用 拖动表名到查询文件中就可以直接把名字拉进来中括号,就代表可写可不写 目录 1.认识存储过程 1.1 存储过程的作用 1.2 存储过程简介…

【word】文档标题如何自动编号

我在写一个word文档的时候,每一级标题的格式都设置好了,包括字体,大小等等,但是如何自动编号呢? 在写中期报告的时候,我对每一级标题的格式都创建了一个单独的样式,像这样: 对于每一…

数据类型知识

1,介绍 根据数据所占的空间不同,把数据分为不同的数据类型 js的变量数据类型是在程序运行中,靠等号右边数值的值来判断的 js动态变量,里面的数据类型是可以变化的 2.数据类型 1.简单数据类型 程序里面,数字前面有…

plotly绘图——热力图

文章目录 介绍热力图基础热力图代码解释 多热力图代码解释 显示数字的热力图代码解释 介绍 plotly是一个易于使用,功能强大的python绘图库,用于构建可交互式的图表(可以自行运行后使用鼠标拖拽图片试试),本系列文章将介…

基于springboot+vue的企业人事管理设计与实现

前言 基于Java的企业人事管理设计与实现,可以让用户在最短的时间里享受到最好的服务;而开发本系统,又能够提高系统整体工作水平,简化工作程序,这对管理员和员工来说都是一件非常乐意的事情。 本系统针对基于Java的企…

(一)Jetpack Compose 从入门到会写

基本概念 Compose 名称由来 众所周知,继承在功能拓展上表现的很脆弱,容易类、函数爆炸,通过代理和包装进行组合会更健壮。 Compose 意为组合,使用上也是把 Compose 函数以 模拟函数调用层级关系的方式 组合到一起,最终…

Vue.js------vue基础

1. 能够了解更新监测, key作用, 虚拟DOM, diff算法2. 能够掌握设置动态样式3. 能够掌握过滤器, 计算属性, 侦听器4. 能够完成品牌管理案例 一.Vue基础_更新监测和key 1.v-for更新监测 目标:目标结构变化, 触发v-for的更新 情况1: 数组翻转情况2: 数组截取情况3…

记录--病理切片图像处理

简介 数字病理切片,也称为全幻灯片成像(Whole Slide Imaging,WSI)或数字切片扫描,是将传统的玻片病理切片通过高分辨率扫描仪转换为数字图像的技术。这种技术对病理学领域具有革命性的意义,因为它允许病理…

C语言文件操作详解

1. 什么是文件: 文件是计算机中存储数据的一种方式,它可以包含文本、图像、音频、视频等各种形式的信息。在计算机系统中,文件被组织成一个个独立的单元,可以通过文件名来标识和访问。文件可以存储在计算机的硬盘、固态硬盘、光盘…