00:00
接下来我们继续看aw k的其他特性啊,接下来我们要看的就是这个需求,那是把password文件当中所有的用户ID,哎,我们的UID,每一个UID都数值增加一,然后输出。诶,这个需求有点奇怪啊,我们不管它具有什么具体的实际意义吧,我们就看看怎么样去实现它,我们在控制台来实现一下啊,其实本身这个还是比较简单的啊,我们直接就看获取到了password里边内容之后,接下来呢?诶,我们其实还是按照冒号去做分割,那当前的UID其实应该是我们当前的第三列啊,就是之前我们分析过这里的这个数据到底是什么样子啊,那应该就是首先是用户名,然后是密码,之后就是用户ID,后面是组ID,所以是当前我们切分之后的第三列啊,那第三列的话。我们这里好像也不需要有任何的正则的提取,所以把前面的这个正则删掉,哎,那我们这里就直接去打印。
01:02
DOLLAR3直接把它打印出来不就完了吗?诶,这就是我们当前的第三列了啊,当前我们看最后就是10001直到1006啊,这是我们自己定义的这个用户的ID,然后最前面当然就是从零开始了,Root ID是零嘛,01234啊,然后接下来我们要求是把这个打印出来的ID要全部加一,诶那怎么全部加一呢?诶其实我们知道这个本来就是一个代码块嘛,里边的是个代码块,那我们DOLLAR3直接加一不就完了吗?哎,所以我们这里边直接加一输出一下果然没有问题,1001~1007,最初那就变成了一开始1234567。所以这个其实实现非常非常简单啊,那这里大家需要考察的是什么呢?主要就是我们这里啊,我当前是希望让它加一,哎,如果下一次希望让他加二呢?哎,那我们知道你把这个命令再重新修改一下吗?改成加二,这不就变成加二了吗?诶是可以这么去做,但是我们会想到当前这里我们执行的是一个代码框。
02:03
如果这个代码块越来越复杂,越来越复杂,里边可能有很多个地方都要用到我们现在想要更改的增加的这个数。那这个时候怎么办呢?啊,我们自然就想到了,你应该把它定义成一个变量,要改就统一都改了。而且更有甚者,我们说本身aw k它是支持后边直接把这个代码块包装成一个脚本的,就是我直接可以aw k后面执行一个脚本。加的是杠杠小F参数,后面就可以执行脚本了,那你如果执行脚本的话,你难道每一次有这个需求变化的时候,这个加一变成加二,你都进去改脚本吗?那这就没道理对吧?哎,我们就可以不改脚本,在外边只要传递一个参数,传递一个变量进来不就可以了吗?哎,所以基于这样的想法,我们这里可以使用另外一个a wp的特性,那就是传说中的。
03:00
它可以去引入一个变量,就是杠V参数啊,前面我们说过这个选项啊,杠V就是这里边可以自己去定义一个变量,然后把它传到后面我们要执行的代码块里面。这个在有一些我们使用脚本去定型这个aw k执行操作定义的时候,就会特别特别方便啊,你不用改脚本,只改一个外边的变量,然后脚本执行的内容就会发生变化。所以这个其实是。可以说是更加强大的一个扩展功能啊,那这里边我们具体来看的话,就应该在前边加上一个杠V啊,比方说我们就把这个叫做I等于一定义在这儿,然后后边这里就是直接DOLLAR3加I就可以了,哎,这里我们看到它这里边的代码写的啊,我们在这儿不需要去Dollar I,不需要像本身在shell脚本里面的那种写法啊,这里面直接写加I就可以。然后我们看到这个就是加一的这种情况,那你如果要是这里变成加二的话,我们就在外部把这个变量直接一改就完事了。
04:03
好,那所以呃,这还只是里边只是非常简单的加了一次啊,如果在我们想这是执行一段代码了,如果在很多地方都用到了这个I,那更是非常方便,我们在外面统一一改,里边就全变了。这就是使用自定义变量的用法,那除了这个自定义变量呢,Aw k里边还有一些所谓的内置变量啊,接下来我们再说一下这个内置变量,什么叫内置变量呢?呃,简单来讲就是有点像我们的这种这种系统环境变量一样的概念啊,就是aw这个工具里边默认有一些变量,诶,它就是指定了我们当前的一些特性的,比如说file name,这是一个变量,它的值是什么呢?就是当前的文件名。啊啊,那NR这是什么呢?这就是当前我们已经读到的第几行的行号,哎,所以我们在这个处理的过程当中,你不是在提取对应的行吗?提取出来之后直接可以把它的行号打印出来。
05:01
那另外还有这个NFNF是我们当前浏览记录的域的个数,什么叫域的个数呢?诶,那就是当前有多少例,总共当前这一行,一共切完了之后有多少列。啊,所以有了这些特性我们就会发现啊,前面我们所有做过的操作,几乎用这个aw k全部直接能够搞定,我们接下来还是大概的看一下。啊,那首先我们先把这些呃,简单的内置变量做一个做一个考察啊,我们先看一看这些内置变量到底是什么样子的啊,那我们还是看这个password。这样的一个文件,然后接下来呢,我们在这个aw k里边去用杠大F。指定当前的分割符是冒号,然后后边呢,也不需要做任何的筛选。没有正则,哎,那接下来我们就直接输出对应的东西就可以了啊,所以这里。直接print。然后这里我们加一个这个说明啊,我们当前直接用中文去做一个说明吧,文件名是什么呢。
06:02
那就是,哎,这里直接跟上file。F。然后后边我们可以加上。空一格,然后显示当前的行号是多少。呃,那这个后边应该是当前的NR内置变量,呃,然后再往后的话,那就是当前一共有多少列列数。当前行的列数啊,那就是NF这样一个内置变量,接下来我们看一下啊,我们看到当前啊,输出了所有的行号和啊,因为我们现在都是整整齐齐的安排嘛,每一行都是七列,所以列数都是七,那前面文件名没有输出,说明我们前面这个应该写错了啊,这个变量名称一定要写对啊,我们看一下果然写错了啊,拼写file name应该是。FILE。然后接下来运行之后,然后我们看到前面是一杠啊,一杠的话表示,哎,这个主要问题在于我们前面是一个。
07:03
这样的一个管道操作,哎,那所以说如果说我们不是管道操作,直接在后边进行分析的,就是ETC下边的password这样一个文件的话,诶,那前面我们可以把这个管道就删掉了,直接回车,哎,那现在我们就看到文件,您可以完整的显示出来ETC password。啊,所以整体来讲这个操作还是非常简单的啊,就是有一些这些内置变量,我们想用他们的时候,随时都可以调用。除了这些基本的调用之外,我们就想到了,诶,那假如说啊,我想输出当前。一个文件里边所有的空行的行号,诶,那能不能直接输出这个行号呢?诶其实当然是可以的啊,我们现在比方说直接用这个if查看当前所有的这些网络的信息,然后呢,输出结果里边的空行的行号啊这个功能其实之前我们。使用grape是很容易实现的啊,我们再来复习一下if config。
08:04
先做一个获取啊,然后接下来呢,我们就直接grape。我们知道当前要显示行号的话,那需要加上杠N参数,然后加一个正则。那就是上间号再加上Dollar符,表示当前行是空行啊,那接下来直接一回车,哎,我们看到是第九行,第18行,第26行,诶这完全没有问题。但是我们会发现啊,这个直接用grape这种方式呢,输出的行号没有问题,后边呢,它带了一个冒号,这是grape默认的这种输出,我们没有办法更改,那所以假如说啊,这个输出的行号,你还想比方说我就想提取它单独的这个数字,或者说后面我还想加一些别的信息,那是没有没有办法改的,你还得进一步做处理。好,那现在呢,我们换一种方式,直接使用aw k。同样还是if f跟F,先做一个管道输出,然后接下来aw k出马,我们当前既然是筛选空行嘛,那当然就不需要定义这个分隔符了,诶直接单引号引起来,当前需要一个正则,那就是上间号,再加上Dollar符,后边是具体的执行的操作,那就是print,当前的NR是行号,诶,所以这个九十八二十六直接就打印输出了。
09:24
而这里呢,没有任何多余的信息,直接就是当前的好号,非常的简单。啊,那当然了,我们会想到,假如说我还想追加一些信息呢,我就想输出前面的这个冒号,或者说我在前面还想增加一些信息,说当前的行号是多少,诶能不能这么做呢?当然可以啊,因为我们这是一个一段代码吗?你想输出什么在这里随便加啊,我们当前就是比方说这是。空行多少,哎,后面直接加上对应的这个行号,这就完了,哎,所以这个输出就会更加的灵活,更加的方便。这是关于我们内置变量的一个使用啊,那既既然提到了这个I跟这个,那我们自然就想到了能不能用aw k做一个IP的切割呢?呃,就像之前我们说的啊呃,使用cut我们可以进行if跟F,看到当前所有的这个IP啊,我们还是复习一下。
10:18
If conig,呃,那比方说我们看当前的这个ENS33,然后直接可以去做一个过滤,我们先拿到啊,之前我们是拿到当前的这个net mask。这一行啊,然后接下来我们使用cut去做一个切割,当时我们说了当前如果我们指定这个使用空格做切割的话,前面因为有一堆的空格,所以我们这里边必须数出来,然后要的是第十行,诶,这样的话就可以把它得到了啊,那如果说我们想要把所有的IP都拿出来的话。那就直接这样,三个IP一下都出来了。但是大家会发现这个肯定是有点儿麻烦的啊,那能不能更简单呢?当然可以,需要aw k出马了。
11:02
Aw k直接出码,哎,那我们知道现在这个首先啊,分割符我们默认就是空格分割嘛,不用加了,然后直接就是一个单引号引起来,现在我们需要有一个正则去筛选,筛选什么呢?你GR ne mask,那我这儿就直接写ne mask不就完了吗。就是要包含了net mask这样的行,然后后边直接。Print。我们知道按空格分割之后,那不就是啊,而且对于这个aw k啊,有很好的一个特性,就是前面这些空格啊,如果都是空的话,它相当于就都不予考虑,所以按照空格分割之后,你直接截取它的第二列就可以了。啊,所以这里边我直接print什么呢,DOLLAR2。直接就拿出了所有的IP。所以我们可以看到这个aw k还是非常好用啊,确实是功能非常强大的一个文本处理工具。
12:00
好,那关于呃,我们的文本处理工具这一章主要介绍了cut和aw k,我们就先讲到这里。
我来说两句