是流式编辑器,针对文档中的行来操作,一行一行地执行。可以非常方便、高效地操作文档以及字符,从而实现我们想要的格式。它的功能非常强大,我在 shell 脚本中经常使用它来处理字符串。下面介绍几个在工作中使用较频繁的用法。
示例命令如下:
本例中,选项的作用是指定分隔符。如果不加选项,则以空格或者为分隔符。为打印的动作,用来打印某个字段。为第 1 个字段,为第 2 个字段,以此类推。但比较特殊,它表示整行:
注意 的格式,后面紧跟单引号,单引号里面为分隔符。的动作要用括起来,否则会报错。还可以打印自定义的内容,但是自定义的内容要用双引号括起来,如下所示:
在文档中过滤出包含指定字符串的行,示例命令如下:
这跟 的用法类似,能实现的功能,但没有颜色显示,肯定没有用起来方便。不过还有比更强大的匹配,如下所示:
它可以让某个段去匹配,这里的~就是匹配的意思。
此外,还可以多次匹配,如下所示:
本例中,匹配完,再匹配,并且只打印所匹配的段。
有时候,在匹配字符的同时要给出限定条件,比如第 3 段为 。示例命令如下:
在 中,我们可以用逻辑符号进行判断,比如就是等于,也可以理解为精确匹配。另外,还有、、等。值得注意的是,在和数字比较时,若把要比较的数字用双引号引起来,那么 awk 不会将其认为是数字,而会认为是字符,不加双引号就会认为是数字。示例命令如下:
本例中,阿铭本想把 uid 大于等于 500 的行打印出来,但是结果并不理想。这是因为 把所有的数字都当作字符了,就跟上一章中提到的排序原理一样。但是,如果不加双引号,就得到了想要的结果:
上例中,表示不匹配,它除了针对某一个段的字符进行逻辑比较外,还可以在两个段之间进行逻辑比较。如下所示:
另外,还可以使用 和,它们分别表示“并且”和“或者”。的用法如下:
的用法如下:
常用的变量有、和。和选项有类似的功能,也是用来定义分隔符的,但是它是在输出的时候定义的。表示用分隔符分隔后一共有多少段。表示行号。
的用法示例如下:
还有更高级一些的用法:
变量 的具体用法如下:
抖音全业务自助在线下单平台,快手1元1000赞在线网站 - 快手点赞1元10000个赞
这里 是多少段,是最后一段的值。变量的具体用法如下:
我们还可以使用 作为判断条件,如下所示:
也可以配合段匹配一起使用,如下所示:
可以更改段值,示例命令如下:
也可以对各个段的值进行数学运算,示例命令如下:
还可以计算某个段的总和,示例命令如下:
这里的 是特有的语法,表示所有的行都已经执行。如下所示:
其实 可以写成一个脚本文件,而且有它特有的语法。在中使用判断、循环都可以,只是在日常管理工作中,使用那么复杂的语句并不常见。
最后,我们再附上常见正则字符的解释。
表示任意一个字符,比如空格、特殊符号等。
表示前面的字符有 0 个或多个,比如那就是 0 个或者多个。
表示任意个任意字符,就是贪婪匹配了。
就是前面的字符有 1 个或者多个,如就是、、……
就是前面的字符有 1 个或者 0 个。
里面是一个范围,如就是前面的字符有 1~5 个。
表示或者,如就是或者。
表示这里面的任意一个字符,如就是或者或者。此外,也可以用范围表示任意一个数字,用表示任意一个小写字母。
表示开头。
表示结尾。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。
标签:
评论