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

这篇具有很好参考价值的文章主要介绍了Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本,麒麟操作系统,编程资料,Linux世界,linux,学习笔记,awk命令,shell编程,shell脚本

0 前言

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

Linux shell编程学习笔记43:cut命令https://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 ~ $ 

Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本,麒麟操作系统,编程资料,Linux世界,linux,学习笔记,awk命令,shell编程,shell脚本

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

Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本,麒麟操作系统,编程资料,Linux世界,linux,学习笔记,awk命令,shell编程,shell脚本

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

Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本,麒麟操作系统,编程资料,Linux世界,linux,学习笔记,awk命令,shell编程,shell脚本文章来源地址https://www.toymoban.com/news/detail-857007.html

到了这里,关于Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux shell编程学习笔记41:lsblk命令

    边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我们不断地研究 前几节学习我们均涉及到磁盘和文件存储,今天我们

    2024年01月24日
    浏览(39)
  • Linux shell编程学习笔记40:stat命令

    “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!” 目录 0 前言 1 DOS、Wind

    2024年01月19日
    浏览(44)
  • Linux shell编程学习笔记37:readarray命令和mapfile命令

      目录   0 前言 1  readarray命令的格式和功能 1.1 命令格式 1.2 命令功能 1.3 注意事项 2 命令应用实例 2.1 从标准输入读取数据时不指定数组名,则数据会保存到MAPFILE数组中 2.2 从标准输入读取数据并存储到指定的数组 2.3 使用 -O 选项指定起始下标 2.4 用-n指定有效行数 2.5 

    2024年02月03日
    浏览(40)
  • Linux shell编程学习笔记45:uname命令-获取Linux系统信息

    linux 有多个发行版本,不同的版本都有自己的版本号。 如何知道自己使用的Linux的系统信息呢? 使用uname命令、hostnamectl命令,或者通过查看/proc/version文件来了解这些信息。 我们先看看uname命令。 我们可以使用命令 uname --help命令 查看它的用法: purpleEndurer @  bash ~ $ uname --

    2024年04月10日
    浏览(48)
  • Linux shell编程学习笔记6:查看和设置变量的常用命令

    上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 语法格式:echo [参数] [输出内容] 常用参数: -e:支持反斜线控制的字符转换(具体参

    2024年02月07日
    浏览(34)
  • Linux shell编程学习笔记31:alias 和 unalias 操作 命令别名

    目录 0 前言 1 定义别名 2 查看别名 2.1 查看所有别名 2.2 查看某个别名 2.2.1  alias 别名 2.2.2 alias | grep 别名字符串 2.2.3 使用 Ctrl+Alt+E 组合键 3 unalias:删除别名 4 如何执行命令本身而非别名 4.1 方法1:使用 Ctrl+Alt+E 组合键  unalias 4.2 方法2:在命令前加上命令文件的绝对路径

    2024年02月05日
    浏览(32)
  • 【Linux】shell编程—awk编辑器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识 可以进行样式装入、流控制、数

    2024年02月06日
    浏览(47)
  • 【Linux编程Shell自动化脚本】03 shell四剑客(find、sed、grep、awk)

    语法格式 参数说明 : path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    浏览(40)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(57)
  • Linux shell编程学习笔记27:tput

    除了stty命令,我们还可以使用tput命令来更改终端的参数和功能。 tput 命令的主要功能有:移动更改光标、更改文本显示属性(如颜色、下划线、粗体),清除屏幕特定区域等。  tput [选项] [参数] 命令格式:   tput setab n : 设置背景色,set text attributes background color   tput

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包