
在此博客中,AWK是一系列文章. 我将尝试以一种易于理解的方式来总结awk命令的相关知识点.
Awk系列博客直接链接: 从放弃到入门的AWK命令摘要(易于理解,快进来看)

本文中的知识点是基于上一篇文章. 如果您尚未掌握上一篇文章中的知识,请参考上一篇文章.
注意: 在阅读本文之前,最好先学习一些基本的开发语法awk数组长度,例如函数的基本概念等,否则在阅读时可能会遇到障碍.
在awk中,您可以自定义功能并具有内置功能. 今天,我们将总结一些常用的内置函数.
Awk的内置函数可以大致分为算术函数,字符串函数,时间函数,其他函数等. 在这里,我仅总结我认为常用的函数.
最常用的算术函数是rand函数,srand函数和int函数.
您可以使用rand函数生成随机数,但是使用rand函数时,您需要与srand函数配合使用,否则rand函数返回的值将保持不变. 示例如下.

可以看出,如果仅使用rand函数,则生成的值将保持不变. 您可以使用srand函数生成一个大于0且小于1的随机数. 示例如下


如您所见,上图中生成的随机数都是小于1的小数. 如果要生成整数随机数,可以将生成的随机数乘以100,然后截取整数部分,然后使用int函数来截取整数部分的值,示例如下

经过上述处理,您可以获得小于100的随机整数.
我们可以使用gsub函数或sub函数替换一些文本. 首先让我们看看如何使用gsub函数.
如果要用大写字母“ L”替换以下文本第一栏中的所有小写字母“ l”,则可以使用gsub函数. 示例如下.

如上所示,我们使用gsub函数将小写字母“ l”替换为大写字母“ L”,但是替换范围限制为“ $ 1”,因此当再次输出文本时,我们发现只有文本将第一列中的小写字母“ l”替换为大写字母“ L”,其他列中的小写字母“ l”不会替换,当然,如果要替换所有小写字母文本“”中的“ l”,您可以将上图中的“ $ 1”替换为“ $ 0”,或在gsub函数中省略第三个参数. 在gsub中省略第三个参数时,默认值为“ $ 0” “. 示例如下.

阅读上面的示例后,我认为您应该已经了解了gsub函数的作用. 是的,gsub函数将在指定范围内找到指定字符,并将其替换为指定字符串.
实际上,我们也可以根据正则表达式替换字符串,示例如下.

好的,在上面的示例之后,您应该已经了解gsub的用法.

那么sub函数和gsub函数之间有什么区别?让我们进行比较.

小心地,正如您已经发现的那样,当使用gsub函数时,gsub将替换指定范围内的所有字符.
使用子功能不同. 使用子功能时,子功能将只替换指定范围内第一个匹配的字符.
我们可以了解gsub函数在指定范围内作为全局替换的作用.
子功能的作用可以理解为在指定范围内的一次替换,仅替换第一个匹配的字符.
这是sub函数和gsub函数之间的唯一区别.
我们可以通过length函数获得指定字符串的长度,示例如下

如上图所示,我们输出文本中每个单词的长度. 实际上,长度函数可以省略传入的参数,即不指定任何字符更改. 省略参数时,默认为使用“ $ 0”作为参数. 示例如下.

如上所示,我们使用length函数获取文本中每一行的长度.

我们可以使用索引函数来获取指定字符在整个字符串中的位置,示例如下

在上图中,我们使用索引函数在每一行中找到字符串“ Lee”. 如果Lee在当前行中存在,则返回字符串Lee位于当前行中;如果Lee在当前行中不存在,则返回0,指示当前行中没有Lee. 如上图所示,第二行包含Lee,并且Lee位于第二行的第七个字符的位置,因此返回数字7.
在上一篇文章中,当我们总结数组时,我们提到了一个函数. 使用此功能,我们可以动态生成数组,而无需手动设置数组中每个元素的值. 是的,此功能是拆分功能. 通过split函数,我们可以根据指定的分割字符剪切指定的字符串,并在剪切后将每个段分配给数组的元素,从而动态创建数组. 示例如下.

如上图所示,当我们在数组中输出元素时,我们使用“: ”作为拆分器,通过split函数拆分字符串ts,并将拆分后的字符串保存到名为huluwa的数组中. ,每个元素的值是分割字符. 实际上,分割函数也具有相应的返回值. 返回值是分割后数组的长度. 示例如下.

请注意,将数组的元素下标除以split函数后开始于1,不同于其他语言中的数组下标从0开始,并且数组输出中元素的顺序可能是字符串中的字符原因不同. 如前所述,如果要按顺序输出数组中的元素,可以使用以下方法.

我们首先使用split函数生成数组,并将split的返回值保存在变量arrlen中,然后在for循环中使用变量的增量顺序输出相应的下标和元素值在数组中. 不明白为什么,请参考上一篇文章.
我们还可以通过asort函数根据元素的值对元素进行排序,但是由asort函数排序的数组的下标将被重置. 示例如下


如上图所示awk数组长度,数组中元素的值都是数字,但下标是自定义字符串. 通过asort函数对数组进行排序后,再次输出数组中的元素时,它们已经符合元素的值. 进行了排序,但是数组的下标也被重置为纯数字. 实际上,asort还有另一种用法,即在对原始数组元素的值进行排序的同时创建一个新数组,并将排序后的元素放入新数组中,这样可以使原始数组保持不变. 只要我们在新数组中打印元素值,我们就可以输出排序后的元素值. 示例如下.

实际上,asort函数也有一个返回值. 它的返回值是数组的长度. 换句话说,asort的返回值是数组中元素的数量. 示例如下.

了解asort函数后,让我们了解asorti函数. 仔细看,是各种各样的东西
使用asort函数根据元素的值进行排序,并使用asorti函数根据元素的下标进行排序.
当元素的下标是字符串时,我们可以使用asorti函数根据下标的字母顺序进行排序. 当元素的下标是数字时,我们不需要使用该函数进行排序. 直接使用for循环. 可排序的,因此,目前我们仅考虑当数组的下标为字符串时,如何通过asorti函数根据下标对数组进行排序.
当数组的下标是字符串时,asorti函数将按原始数组中的下标字母顺序排序,并将排序后的下标放入新数组中,而asorti函数将返回新的数组,示例如下

如上图所示,在根据数组t的索引进行排序之后,asorti函数将创建一个新的数组newt. newt中元素的值是数组t的索引的值. 在上面的示例中,我们使用len变量保存asorti函数的Return值,并在最后排序之后输出新数组.
所以,您像您一样聪明,您必须考虑到既然我们已经排序并输出了t数组的下标,那么我们绝对可以再次根据排序后的下标输出相应的元素值,从而实现根据数组下标进行排序之后,输出原始数组元素的目的如下.

是的,上述过程实际上是由新数组负责对旧数组的下标进行排序,并将排序后的下标用作新数组的元素,并且在我们输出新数组的元素时,我们还使用新数组的元素值作为旧数组的下标,它输出旧数组中元素的值,这句话很容易包装,但是我想你应该理解.
本文总结如下,希望对您有所帮助〜
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-199317-1.html
雷达
这是我的老公们
饮料不饮料酒不像酒的玩意