
gawk
文章平均质量分 93
前面有光
计算机软硬件
展开
-
awk从放弃到入门(11):拾遗之”三元运算”与”打印奇偶行”
当awk开始处理第一行时,变量 i 被初始化,变量 i 在被初始化时,值为”空”,而awk中,数字0或者”空字符串”表示假,所以可以认为模式为假,但是 i 直接取反了,对假取反后的值为真,将取反后的值又赋值给了变量i,此刻,变量i的值为真,所以当awk处理第一行文本时,变量i的值被赋值为真,模式成立则需要执行对应的动作,而上例中又省略了动作,所以默认动作为”{print $0}”,所以,第一行被整行打印了。而上例中,”$3<500″就是上述语法中的”条件”,”系统用户”就是上述语法中”?原创 2023-12-01 17:00:38 · 884 阅读 · 0 评论 -
awk从放弃到入门(10):awk内置函数
如上图所示,数组中元素的值均为数字,但是下标为自定义的字符串,通过asort函数对数组排序后,再次输出数组中的元素时,已经按照元素的值的大小进行了排序,但是,数组的下标也被重置为了纯数字,其实,asort还有一种用法,就是在对原数组元素值排序的同时,创建一个新的数组,将排序后的元素放置在新数组中,这样能够保持原数组不做任何改变,我们只要打印新数组中的元素值,即可输出排序后的元素值,示例如下。我们还能够通过asort函数根据元素的值进行排序,但是,经过asort函数排序过后的数组的下标将会被重置,示例如下。原创 2023-11-30 17:24:02 · 1089 阅读 · 0 评论 -
awk从放弃到入门(9):awk数组详解
如果你有过任何一种编程语言的使用经验,那么你一定知道,我们可以通过数组的下标(或者称索引),引用数组中的元素,其他语言中,数组的下标通常由0开始,也就是说,如果想要引用数组中的第1个元素,则需要引用对应的下标”[0]”,awk中的数组也是通过引用下标的方法,获取数组中的元素的,但是在awk中,数组元素的下标默认从1开始,但是为了兼容你的使用习惯,我们也可以从0开始设置下标,此处不用纠结,到后面自然会明白,我们先来看一个最简单的示例。必须能啊,今天我们就来聊聊awk中的数组。原创 2023-11-29 19:50:07 · 1215 阅读 · 0 评论 -
awk从放弃到入门(8):awk动作总结之二
本博文转载至这篇文章中的知识点是建立在前文的基础上的,如果你还没有掌握前文中的知识,请先参考之前的文章。注:在阅读这篇文章之前,最好已经了解了一些开发的基本语法,比如,for、while、do…while 等,否则在阅读时 有可能遇到障碍。前文中,我们介绍了awk中的条件判断语句。比如 “if”比如 “if…else…”比如 “if…else if…else…”我们说过,这些语句都可以归类为”控制语句”,但是这些并不是”控制语句”的全部,今天我们继续聊聊awk的”控制语句”。原创 2023-11-28 21:56:55 · 1024 阅读 · 0 评论 -
awk从放弃到入门(7):awk动作总结之一
本博文转载至这篇文章中的知识点是建立在前文的基础上的,如果你还没有掌握前文中的知识,请先参考之前的文章。注:在阅读这篇文章之前,最好已经了解了一些基本的开发语法,比如,if、if…else、for、while等,否则在阅读时 有可能遇到障碍。在前文中,我们已经使用过了awk的选项、模式 以及 动作。这篇文章中,我们再来聊聊动作。不知从何说起,我们还是从之前的示例开始聊吧,回顾一个小例子,如下图所示。如上图所示,红线标注部分就是awk命令中的”动作”,我想你应该已经非常熟悉了。原创 2023-11-27 22:16:36 · 882 阅读 · 0 评论 -
awk从放弃到入门(6):awk模式(Pattern)之二
其实,这就是我们今天要介绍的”正则模式”,在使用”正则模式”时,文本行如果能够被正则表达式匹配到,就会执行对应的动作,如果没有被正则匹配到,则不会执行对应的动作,而上例中,对应的动作就是{print $0},也就是打印整行,所以,上例中的grep命令与awk命令所实现的效果是完全相同的,那么你可能会问,既然效果完全相同,为什么还要使用awk呢?正则模式可以理解为,把”正则表达式”当做”条件”,能与正则匹配的行,就算满足条件,满足条件的行才会执行对应的动作,不能被正则匹配到的行,则不会执行对应的动作。原创 2023-11-26 17:05:43 · 935 阅读 · 0 评论 -
awk从放弃到入门(5):awk模式(Pattern)之一
上图中,我们使用了一个简单的”模式”,换句话说,我们使用了一个简单的”条件”,这个条件就是,如果被处理的行正好有5列字段,那么被处理的行则满足”条件”,满足条件的行会执行相应的动作,而动作就是{print $0},即打印当前行,换句话说,就是只打印满足条件的行,条件就是这一行文本有5列(NF是内置变量,表示当前行的字段数量,如果你忘了,那么请你重新看一遍之前的文章),而上例中,只有第二行有5列,所以,只有第二行能与我们指定的”模式”相匹配,最终也就只输出了第二行。这就是所谓的”模式”,其实很简单,对吧。原创 2023-11-26 16:47:38 · 927 阅读 · 0 评论 -
awk从放弃到入门(4):awk格式化
而”替身演员”只是我给”%s”起的一个外号,它的真名叫”格式替换符”,而printf中,”格式替换符”不只有”%s”一种,”%s”代替了每一个传入的参数,并将他们转化成了”字符串类型”,我们再来认识一个新的替身演员,”%f” ,”%f”也代替了每一个传入的参数,与”%s”不同的是,”%f”会将每一个传入的参数转换成”浮点类型”,我们来看一个小例子。没错,命令3中的”%s\n”即为我们指定的”格式”,而后面的每一段字符串,都被当做参数传入到了printf命令中,并按照我们指定的格式进行了格式化。原创 2023-11-26 12:22:45 · 1010 阅读 · 0 评论 -
awk从放弃到入门(3):awk变量
好了,内置变量解释完了,现在我们来看看自定义变量,自定义变量,顾名思义,就是用户定义的变量,有两种方法可以自定义变量。方法一:-v varname=value 变量名区分字符大小写。方法二:在program中直接定义。我们来看一些小例子,即可明白上述两种方法。通过方法一自定义变量。这种方式,与设置内置变量的值的方法是一样的。使用方法二自定义变量,直接在program中定义即可,但是注意,变量定义与动作之间需要用分号”;”隔开。当然,我们也可以一次性定义多个变量。原创 2023-11-26 11:51:40 · 1134 阅读 · 0 评论 -
awk从放弃到入门(2):awk分隔符
输入分隔符比较容易理解,当awk逐行处理文本的时候,以输入分隔符为准,将文本切成多个片段,默认使用空格,但是,如果一段文字中没有空格,我们可以指定以特定的文字或符号作为输入分割符,比如下图中的例子,我们指定使用”#”作为输入分隔符。在前一篇文章中我们略微提到过”分隔符”,但是并没有细说,那么我们今天就聊聊什么是分隔符,awk有哪些分隔符,awk的默认分割符是空格,但是,这样描述并不精确,因为,awk的分隔符还分为两种,”输入分隔符” 和 “输出分隔符”。没关系,我们来动手实践一下,胜过千言万语。原创 2023-11-26 11:27:51 · 1054 阅读 · 0 评论 -
awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)
AWK命令总结之从放弃到入门我们先来用专业的术语描述一下awk是什么,如果你看不懂,没关系,我们会再用”大白话”解释一遍。awk是一个报告生成器,它拥有强大的文本格式化的能力,这就是专业的说法。原创 2023-11-25 13:18:55 · 832 阅读 · 0 评论