返回顶部
首页 > 资讯 > 操作系统 >linux中awk的基本格式是什么
  • 936
分享到

linux中awk的基本格式是什么

2023-06-16 05:06:17 936人浏览 八月长安
摘要

这篇文章主要为大家展示了“linux中awk的基本格式是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中awk的基本格式是什么”这篇文章吧。介绍了 awk 命令的基本格式:$&nb

这篇文章主要为大家展示了“linux中awk的基本格式是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中awk的基本格式是什么”这篇文章吧。

介绍了 awk 命令的基本格式:

$ awk [选项] '模式 {动作}' 输入文件

awk 是一个命令,后面要接选项 (比如用 -F 来定义字段分隔符)。想让 awk 执行的部分需要写在两个单引号之间,至少在终端中需要这么做。在 awk 命令中,为了进一步强调你想要执行的部分,可以用 -e 选项来突出显示(但这不是必须的):

$ awk -F, -e '{print $2;}' colours.txtyellowbluegreen[...]

记录和字段

awk 将输入数据视为一系列记录,通常是按行分割的。换句话说,awk 将文本中的每一行视作一个记录。每一记录包含多个字段。一个字段由字段分隔符分隔开来,字段是记录的一部分。

默认情况下,awk 将各种空白符,如空格、制表符、换行符等视为分隔符。值得注意的是,在 awk 中,多个空格将被视为一个分隔符。所以下面这行文本有两个字段:

raspberry red

这行也是:

tuxedo                  black

其他分隔符,在程序中不是这么处理的。假设字段分隔符是逗号,如下所示的记录,就有三个字段。其中一个字段可能会是 0 个字节(假设这一字段中不包含隐藏字符)

a,,b

awk 程序

awk 命令的程序部分是由一系列规则组成的。通常来说,程序中每个规则占一行(尽管这不是必须的)。每个规则由一个模式,或一个或多个动作组成:

模式 { 动作 }

在一个规则中,你可以通过定义模式,来确定动作是否会在记录中执行。模式可以是简单的比较条件、正则表达式,甚至两者结合等等。

这个例子中,程序只会显示包含单词 “raspberry” 的记录:

$ awk '/raspberry/ { print $0 }' colours.txtraspberry red 99

如果没有文本符合模式,该动作将会应用到所有记录上。

并且,在一条规则只包含模式时,相当于对整个记录执行 { print },全部打印出来。

Awk 程序本质上是数据驱动的,命令执行结果取决于数据。所以,与其他编程语言中的程序相比,它还是有些区别的。

NF 变量

每个字段都有指定变量,但针对字段和记录,也存在一些特殊变量。NF 变量,能存储 awk 在当前记录中找到的字段数量。其内容可在屏幕上显示,也可用于测试。下面例子中的数据,来自上篇文章文本:

$ awk '{ print $0 " (" NF ")" }' colours.txtname       color  amount (3)apple      red    4 (3)banana     yellow 6 (3)[...]

awkprint 函数会接受一系列参数(可以是变量或者字符串),并将它们拼接起来。这就是为什么在这个例子里,每行结尾处,awk 会以一个被括号括起来的整数表示字段数量。

NR 变量

另外,除了统计每个记录中的字段数,awk 也统计输入记录数。记录数被存储在变量 NR 中,它的使用方法和其他变量没有任何区别。例如,为了在每一行开头显示行号:

$ awk '{ print NR ": " $0 }' colours.txt1: name       color  amount2: apple      red    43: banana     yellow 64: raspberry  red    35: grape      purple 10[...]

注意,写这个命令时可以不在 print 后的多个参数间添加空格,尽管这样会降低可读性:

$ awk '{print NR": "$0}' colours.txt

printf() 函数

为了让输出结果时格式更灵活,你可以使用 awkprintf() 函数。 它与 C、lua、Bash 和其他语言中的 printf 相类似。它也接受以逗号分隔的格式参数。参数列表需要写在括号里。

$ printf 格式, 项目1, 项目2, ...

格式这一参数(也叫格式符)定义了其他参数如何显示。这一功能是用格式修饰符实现的。%s 输出字符,%d 输出十进制数字。下面的 printf 语句,会在括号内显示字段数量:

$ awk 'printf "%s (%d)\n",$0,NF}' colours.txtname       color  amount (3)raspberry  red    4 (3)banana     yellow 6 (3)[...]

在这个例子里,%s (%d) 确定了每一行的输出格式,$0,NF 定义了插入 %s%d 位置的数据。注意,和 print 函数不同,在没有明确指令时,输出不会转到下一行。出现转义字符 \n 时才会换行。

Awk 脚本编程

这篇文章中出现的所有 awk 代码,都在 Bash 终端中执行过。面对更复杂的程序,将命令放在文件(脚本)中会更容易。-f FILE 选项(不要和 -F 弄混了,那个选项用于字段分隔符),可用于指明包含可执行程序的文件。

举个例子,下面是一个简单的 awk 脚本。创建一个名为 example1.awk 的文件,包含以下内容:

/^a/ {print "A: " $0}/^b/ {print "B: " $0}

如果一个文件包含 awk 程序,那么在给文件命名时,最好写上 .awk 的扩展名。 这样命名不是强制的,但这么做,会给文件管理器、编辑器(和你)一个关于文件内容的很有用的提示。

执行这一脚本:

$ awk -f example1.awk colours.txtA: raspberry  red    4B: banana     yellow 6A: apple      green  8

一个包含 awk 命令的文件,在最开头一行加上释伴 #!,就能变成可执行脚本。创建一个名为 example2.awk 的文件,包含以下内容:

#!/usr/bin/awk -f## 除了第一行,在其他行前显示行号# NR > 1 {    printf "%d: %s\n",NR,$0}

可以说,脚本中只有一行,大多数情况下没什么用。但在某些情况下,执行一个脚本,比记住,然后打一条命令要容易的多。一个脚本文件,也提供了一个记录命令具体作用的好机会。以 # 号开头的行是注释,awk 会忽略它们。

给文件可执行权限:

$ chmod u+x example2.awk

执行脚本:

$ ./example2.awk colours.txt2: apple      red    42: banana     yellow 64: raspberry red    35: grape      purple 10[...]

awk 命令放在脚本文件中,有一个好处就是,修改和格式化输出会更容易。在终端中,如果能用一行执行多条 awk 命令,那么输入多行,才能达到同样效果,就显得有些多余了。

以上是“linux中awk的基本格式是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux中awk的基本格式是什么

本文链接: https://lsjlt.com/news/282420.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • linux中awk的基本格式是什么
    这篇文章主要为大家展示了“linux中awk的基本格式是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中awk的基本格式是什么”这篇文章吧。介绍了 awk 命令的基本格式:$&nb...
    99+
    2023-06-16
  • awk的基本使用方法是什么
    今天就跟大家聊聊有关awk的基本使用方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。awk是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这...
    99+
    2023-06-06
  • sed及awk的基本使用方法是什么
    这期内容当中小编将会给大家带来有关sed&awk的基本使用方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。sed&awk基本使用方法sed 工具简介在了解了一些正规表示法的基础应用...
    99+
    2023-06-13
  • Html结构和基本格式是什么
    这篇文章主要介绍“Html结构和基本格式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Html结构和基本格式是什么”文章能帮助大家解决问题。1、HTML基本文...
    99+
    2024-04-02
  • Linux中的awk数组的基本使用方法
    1.awk数组描述 在其他的编程语言中,数组的下标都是从0开始的,也就是说,如果想反向引用数组中 的第一个元素,则需要引用对应的下标[0],在awk中数组也是通过引用下标的方法,但是在awk中数组的下标是从1开始的,在其...
    99+
    2022-06-04
    linux awk 数组 awk 数组使用
  • Linux中awk命令的作用是什么
    Linux中awk命令的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一...
    99+
    2023-06-09
  • linux中awk基本使用方法有哪些
    这篇文章给大家分享的是有关linux中awk基本使用方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显...
    99+
    2023-06-27
  • linux的软件格式是什么
    这篇文章主要讲解了“linux的软件格式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux的软件格式是什么”吧!在linux中,软件的格式是“ELF”;ELF是可执行连接文件格式...
    99+
    2023-06-30
  • linux tgz格式指的是什么
    这篇文章主要介绍“linux tgz格式指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux tgz格式指的是什么”文章能帮助大家解决问题。在linux中,tgz是压缩文件格式;TGZ...
    99+
    2023-07-04
  • SQLite中SELECT基本形式是什么
    这篇文章将为大家详细讲解有关SQLite中SELECT基本形式是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQLite中SELECT基本形式 每个数据库...
    99+
    2024-04-02
  • wps表格的基本操作是什么
    这篇文章主要讲解了“wps表格的基本操作是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“wps表格的基本操作是什么”吧!首先建议大家先点击右上角选项,登录wps账号。(没有就注册一个)登...
    99+
    2023-07-02
  • Linux中Awk 的功能以及用法是什么
    本篇文章给大家分享的是有关Linux中Awk 的功能以及用法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们知道 Linux 三剑客,它们是 grep、sed、awk,...
    99+
    2023-06-15
  • linux基本结构是什么
    今天小编给大家分享一下linux基本结构是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。linux可分为4个部分:1、内...
    99+
    2023-06-30
  • Linux Container的基本命令是什么
    本篇内容主要讲解“Linux Container的基本命令是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux Container的基本命令是什么”吧!lxc能做什么:可以为容器绑定特...
    99+
    2023-06-12
  • css中外链式基本写法是什么
    这篇文章主要介绍“css中外链式基本写法是什么”,在日常操作中,相信很多人在css中外链式基本写法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css中外链式基本写法是...
    99+
    2024-04-02
  • C++中C风格字符串的基本概念是什么
    今天就跟大家聊聊有关C++中C风格字符串的基本概念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++编程语言作为一款C语言的升级版本,支持C语言中的各种功能,有经验的编程人员...
    99+
    2023-06-17
  • linux中的awk怎么用
    这篇文章主要为大家展示了“linux中的awk怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中的awk怎么用”这篇文章吧。awk内置变量ARGC   ...
    99+
    2023-06-05
  • linux中的awk中怎么用
    这篇文章主要介绍linux中的awk中怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.   截取文档中的某个段示例命令如下:# head -n2 t...
    99+
    2023-06-15
  • linux磁盘格式化的方法是什么
    Linux系统中可以使用多种方法进行磁盘格式化,以下是几种常见的方法:1. 使用mkfs命令:mkfs命令可以用来创建文件系统,在格...
    99+
    2023-09-16
    linux
  • Linux格式化硬盘的步骤是什么
    这篇文章主要为大家分析了Linux格式化硬盘的步骤是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux格式化硬盘的步骤是什么”的知识吧。导读Lin...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作