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 ~ $ 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于R语言的影视评分影响因素实证分析(二)

在某网站抓取了百条数据,试图通过对这些数据的分析,找出电影受欢迎的因素。本案例共获取100条数据。数据详情如下: 1.数据处理及变量描述 首先对数据进行筛选处理,将不需要或者缺失变量进行剔除。 电影类型只保留第一个选项,即《唐人街探案2》的电影类型有喜剧,动作,犯罪…

transformer上手(2) —— 注意力机制

自从 2017 年 Google 发布《Attention is All You Need》之后,各种基于 Transformer 的模型和方法层出不穷。尤其是 2018 年,OpenAI 发布的 GPT 和 Google 发布的 BERT 模型在几乎所有 NLP 任务上都取得了远超先前最强基准的性能,将 Transfor…

苹果手机短信删除了怎么恢复?别急,教你4招恢复技巧

在日常使用中,由于误操作或其他原因,我们可能会不小心删除了重要的短信,这时就需要寻找合适的方法来恢复它们。短信删除了怎么恢复?请接着往下看! 首先,不必过于紧张,因为苹果手机提供了一些功…

二:什么是RocketMQ

RocketMQ是阿里开源的消息中间件产品,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,性能强劲(零拷贝技术),支持海量堆积,在阿里内部进行大规模使用,适合在互联网与高并发系统中应用。 官方文档&#xff1a…

深入C语言内存:数据在内存中的存储

一、数据类型 1. unsigned:无符号数类型 当一个数是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。 2.signed:有符号数类型 当一个数是有符号类型时,最高数称为“符号位”。符号位为1…

解决npm install安装node-sass包容易失败的问题

具体问题如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…

配置交换机 SSH 管理和端口安全——实验1:配置交换机基本安全和 SSH管理

实验目的 通过本实验可以掌握: 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 交换机基本安全和 SSH管理实验拓扑 实验步骤 (1)配置交换机S1 Switch>enab…

RTThread studio 驱动开发

rtthread 驱动开发的两种情况 rtthread studio 自动生成 由 RT Thread Studio 自动生成,无需修改任何文件或者简单定义几个宏即可直接使用的驱动,如 GPIO,UART,I2C,SPI,SDIO 和 ETH 等。 使用 RT-Thread S…

快速入门Kotlin④集合

集合概述 继承关系(List、Set和Map均继承了Collection) List List 是一个接口,用于表示列表(List)数据结构。它是一个有序的集合,允许重复元素。 listOf 创建的列表是不可变的,而 mutableListOf 创建的列表是可变的,允许对其进行添加、删除和更新操作。 fun main()…

JAVA面试八股文之Redis相关

Redis相关 Redis6.0为什么要用多线程?在Redis中存一个list集合怎么实现排序?Redis的5大基本类型的底层原理?缓存穿透?缓存击穿?缓存雪崩?redis做为缓存怎么保持和mysql数据进行同步?&#xff08…

老子云、AMRT3D、眸瑞科技

老子云概述 老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 1、基…

比特币革命:刚刚开始

作者:Marius Farashi Tasooji 编译:秦晋 要充分理解比特币及其含义,首先必须理解什么是价值,什么是货币。以及是什么赋予资产价值? 这个问题看似愚蠢,但实际上非常有趣。我们的生活是由我们消费或出售的物品…

Redis的三种部署方案

文章目录 单机模式主从复制哨兵模式分片集群 在Redis中提供的集群方案总共有三种:单机模式,主从复制集群、哨兵模式,Redis分片集群 单机模式 Redis 只运行在一台服务器上,并且所有的数据都存储在这一台服务器的内存中。 主从复制…

ATF密钥生成和验签

ATF密钥生成和验签 根密钥生成 密钥的生成依赖openssl库,需要提前安装: sudo apt-get install openssl生成.pem格式的RSA4096私钥 openssl genrsa -out pri_key.pem 4096生成对应的DER格式公钥 openssl rsa -in pri_key.pem -pubout -out pub_key.der …

select详细用法

数据库版本:KingbaseES V008R006C008B0014 简介 SELECT语句是用于从一个或多个表中检索数据的操作,它作为数据库DQL语言,可以通过特定条件从表中检索数据。本篇文章以kingbase为例介绍select的详细用法。 文章目录如下 1. 基本语法 2. 条件…

DSP 技术基本概念及典型系统分析

1、 基本概念与典型的DSP系统 通常 DSP(Digital Signal Processing)是指数字信号处理。DSP 芯片是专用的数字信号处理器(Digital Signal Processor),它采用哈佛结数、流水线作业方式的并行处理技术,有专用…

三、SpringBoot3 整合 SpringMVC

本章概要 实现过程web 相关配置静态资源处理自定义拦截器(SpringMVC 配置) 3.1 实现过程 创建程序引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www…

【算法统治世界】动态规划 个人笔记总结

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

中仕公考:2024山东事业编笔试成绩已出!

2024年山东省事业编笔试成绩查询入口于4约8日已经开放&#xff0c;考生可以登录入口查询笔试成绩。 山东16地市除菏泽以外均有县区参加此次310事业单位统考&#xff0c;成绩查询入口及进面名单等分地市分县区发布&#xff0c;考生可关注报考当地人民政府网站。笔试成绩查询后&…

鸿蒙南向开发:制作【智能儿童手表】

样例简介 本项目是基于BearPi套件开发的智能儿童手表系统&#xff0c;该系统通过与GSM模块&#xff08;型号&#xff1a;SIM808&#xff09;的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接&#xff0c;同步时间和获取天气信息&#xff0c;通过手机下…