00:00
那咱们刚才给大家讲了基本的正则表达式写法,这个基本正则表达式写法,大家可能也发现它的写法呢,有些地方太过于繁琐,尤其那个花括号很讨厌啊,这个画括号前面老是要带个什么,呃,斜线是那个分组里面,前面也带了一个斜线。啊,包括还有这个表示重复了多少次,那每次都要加一个斜线,这个斜线呢,这个斜起来确实是不方便的,那在我们刚才看到的正则表达式中,很多地方都有这个斜线,那事实上咱们还有一种更加简洁的正则表达式写法,那叫扩展的正道表达式,像这种斜线呢,在扩展的正则表达式也就去掉了,没了取消斜线的表达式就是扩展的正则表达式。
01:09
当然不是说所有都能都能取消啊,像这个单词的词首啊,词尾啊,啊,这个这个斜线去不了啊,这个斜线别去了啊,有些可以去,有些不能去啊,那分组这个地方呢,也可以去,另外呢,还有一个概念叫或或的话呢,这个是咱们在。正的表达式也支持的,不过他也要加斜线。你看如果是这样写,就是A或B。这个表示的是C或者cat,那你要表示C。大写C小写C后面跟at,那这个得括起来,知道吧,括起来。把它括起来啊,大写C小写C,斜杠就是个竖线。
02:03
但是这个斜线呢,在太多的地方出现啊,造成我们这个斜起来也容易犯错误,所以我们这边呢,有一个扩展的正则表达式,它的写法呢,大家看跟基本正则表达式。基本上差别不大,更加简单了,看到没,是不是少了极限了?少了斜线了,少了斜线了,其他的都一样,不过呢,这个行首行尾就是词首词尾,这个斜线还是有的啊,此首词尾呢,除了用这个小括号,也可以用斜杠B,斜杠B呢,它既可以表示行首,呃,词首又可以表示词尾,分组的话也不用加斜线了,扩也不用加斜线,是不是更加幸福了?当然了,你要用扩展的这则表达式,你得看命律。刚才我们在VM里面发现用的就是基本上的表达式。那gra命令里面是可以用扩展正的表达式gra命令,它的扩展中的表达式需要加一个选项叫大意,或者用啊1GRA1GRA命令实际上就是相当于1GREAT,相当于break加抗。
03:25
它是等价的,知道吧,杠E呢,大意就是表示用扩展的正则表达式,你要不写杠E,那就用的是基本上的表达式。另外还有一个叫杠F,杠F表示的是不使用正则表达式。那它等价于FGR,也就是后面你不能写这个表达式,它不认了。啊,这个呢,一般来讲我们用的不多。好,那现在呢,咱们就可以用基本的正能表达式,扩展的正能表达式来实现一些功能了啊,你像我们刚才曾经给大家实现的这样的一些功能,我们现在就可以考虑用正则表达式来实现了啊,比方说我们就也。
04:14
我想表示RO这个O呢,出现了这个两次啊,或者谷歌吧,谷歌这个谷歌出现了两次以上。谷歌出现了两次以上,这个O出现了两次以上,那刚才呢,我们是怎么写的呢?是O,然后用二逗号,是不是这么写的是吧,这是不是就出现了两次以上的。对吧,那这个是属于基本正能表达式,我们刚才说了扩展的智能表达式,这个斜杠可以不写。一下就幸福了很多,但是呢,需要加杠E,你不加杠E他不知道你它默认用的是基本的,所以加杠E它才用那个扩展的等量表达式,看到没啊,也可以用啊,一就你可以用一,这样的话它是等价的。
05:09
也可以,这是不是就方便多了啊,一下清爽了很多,你少了斜线就感觉就轻松多了。但是刚才还是那句话啊,具体命令具体对待,因为有的命令你像VM人家用的就基本的,你就不能写成扩展的是不是,所以看命令看命令,还有就是我们刚才想实现的功能,比方说我想把这个IP地址,这次再想表达出来,我们是不是就知道怎么做了。刚才曾经我们实现过,不过呢,这个写法稍微有点啰嗦啊,那我们现在可以把它在它的基础上再来改进了啊,你像我们刚才去表示一个IP地址是这么这么写的吧,是不是是这么写的,那我们现在可以来把它。来执行一下了。嗯。
06:12
啊,大家看已经可以搜索出来了。但这个写法呢,是很繁琐的,我们可以再简洁一些,比方说我们现在用扩展的正能表达式杠一这个斜线至少是以不用写了,是不是这个斜线可以不用写了,而且呢,我们现在有了分组以后,是不是就不用再把这个什么零到九,一到三再给他重复这么多次了,是不是我们就可以把它作为一个整体?作为整体之后出现几次,三次,三次怎么表示对不对?直接这样就可以了,然后在后面补上一个地址就完了。
07:08
嗯。后面再跟上数字加这个一到三个数,这个斜杠用不到了。大家看这个是不是就可以实现了。啊,大家看这个比以前短了一些啊,短了不少,这个是不是就表示了数字三个数字。啊,三个数字。这是三个数字。这个三个数字一到三,就是一到三个数字,然后加个点,然后括号括起来,作为一个分组出现几次呢?三次,然后再跟上一个数字,一到三个数字,这不就凑出来了吗?啊,凑出来了啊,大家看出来了。
08:04
啊。那。将来我们用正则表达式可以匹配很多内容啊,比方说LSLS这里面有一些文件是。T词后缀的,我们以前说要表示所有的T文件后缀,用通背符写法可以轻松搞定。那事实上我们有了正则表达式,是不是也可以这么搞?我们用正道表达式过滤出所有太子后币的文件,怎么搞啊?我们用grape就可以吧。这个可以这样写啊。所有太子后缀的文件在正则表达式中怎么表示?是不是斜杠点。
09:03
这是不是正则表达式写法啊,斜杠表示点要转移嘛,因为点它有含义。点表示任意一个字,所以我要表示点本身是不是就得转移了。可以吧?睡觉了吧。哎,也可以实现。所以正的表达式在我们后面学习的过程中是非常常用的一个技术啊。那如果我想表示。嗯。所有的这个。数字要求你比方说输入一个。数字是你的年龄。那用户输入的数字有可能并不是你期望的,有可能他胡输了一个东西。
10:03
我怎么表示是一个合法的年龄的数字呢?怎么去,怎么保表示,比方说将来我们编写一些代码的时候,可能用户要输入一些信息,比方说输入年龄,那么你要判断他输的年龄是个合法的年龄,他是非法的、错误的、胡写的年龄。是吧,错的,那我就让他重写呗。是吧,那怎么保证啊,怎么实现啊。那怎么表示年龄?是一个合理的范围的年龄。首先年龄必须是数字吧。必数纯数字,哎,对,那这个数字你多大呀,百多一百五啊,当然咱们也可以不用那么粗,就是至少不能超过三位数吧,而且不能说四位数,这这目前我们还做不到啊,那现在我们要想实现确保这个数字是三位数以内,怎么保持三位数以内啊,那是不是就是零到九。
11:16
是不是就是一到三位,当然我们用扩展的度表示比较显,这就可以表示了,当然这样做的话,实际上它可以达到999岁是吧,999岁,所以呢,我们还可以再精细一点啊,怎么精细呢?那我可以表示这个最前面这个一呀,可有可无。最多就100岁,然后这个是一到二啊,或者二以内也行。是不是就行了。这是不是他最多也就199岁,这不就更好一点吗?是吧,那你看我们这个123是满足要求的,那200岁就不能不能满足要求了呀,这怎么也满足要求了,哎,那看看出了什么问题。
12:13
啊对,我们因为没有锚定位置,因为它只要包含就行啊,所以这个我们要保定位置啊,锚定位置,比方说锚定位置,因为我就出现一个数字嘛,是吧,出现一个数字,你看这不就不满足要求了,对吧,那前后它不能带东西了啊,要不二三二十二满足一个要求,三也满足一个要求,他凑起来,这就好像都好像感觉都满足了,他实际上是22和三是吧,或者二和二三。嗯。啊,那123这是满足要求是吧,所以这样的话呢,就可以实现比较合理的用户输入信息的判断。这个未来将来会作为我们编写脚本的一个非常重要的技能。
13:05
嗯。好,那现在我们就了解了正则表达式的用法,将来你在正则表达式里面可以表达你生活中的各种符号,比方说如何表示你的身份证号。如何表示你的QQ号?如何表示邮箱?你都可以考虑考虑怎么用正则表达式来表达出来。啊,请你输入QQ号。那么你要进行QQ号的正则表达式匹配。不如不允许他输入一个胡写的QQ号。身份证号儿手机号是吧。都可以写成振动表达式。好,这是我们刚才给大家讲的正则表达式的用法。
14:00
现在大家先暂时先记住正则表达式这些原字符。看到了你能看懂,慢慢的再把它不断的练习,我们后面的课还会反复用。那接下来我们把grape这个命令来说一说,Grape这个命令的用法非常灵活。它支持很多选项,刚才我们已经提到了一些选项,那color不用说了,带颜色是吧,它这个本身它加了个边边名,那么杠E这两个我们也说过了,杠F这个就是相当于不支持正的表达式了啊,如果你跟上一个杠F呢,相当于后面它不是正的表达式啊,它相当于一个就是当成一个字符串,后面它全都当成的是普通字符串了。所以这个的话呢,就相当于就失去了正则表达式的功能了,所以这个一般来讲我们不太用啊,当然如果你就想过滤字符串,那你可以这么写。
15:01
V呢,是排除这个我们刚才说过了。A是互联大游戏,就是搜索的时候,如果你不希望关注它的大游戏啊,比方说我们rot这个显而易见,默认它是会来关注大小写的,那如果我们想不关心大小写,加上I这样管你大小写都无所谓了。好,那再有就是N显示匹配的行的编号,第几行满足我加上个N看看啊,第一行和第十行。啊,这这两行包含这个root把这行号给打出来了啊,还有就是CC是统计匹配的行,有几行就是我不关心具体行号是多少,我只关心有几行匹配。有两行。
16:01
是吧,就是统计了好。那这个将来也是很有意义的啊,这个将来很有意义的。好,那此外我们还可以去看。Oo呢,就是找到匹配的字符串本身,至于无关的字符不显示了。默认情况下,Grape它是某一行包含那么这个字符串,好,那么整行它都会给你显示出来。那么O的意思也就是说只显示这个满足这个字符串本身的字符啊O。看到没?包含这个字符串的字符留下来,其他就不要,诶这个东西有啥好处啊,我们是不是这个IP地址就可以取出来了,刚才我们取IP地址的时候,我们现在可以这么来。
17:09
做了,我们现在是不是只要IP就可以了。是不是其他无关的就不要了啊,那现在我们要取IP,现在是不是可以用取第一个就可以了。是不是I取。这种方法通用不通用呢?我们在七上执行。六上执行通用不通用啊,通用啊,我这儿没有开六啊,我可以发给你们,你们在六上执行一下,看看能不能有效果,但是他这个好像竖线打不出来啊。竖线打不出来。那你有没有开乌邦兔的,你也可以试试,我们尽可能写出代码呢,在各种版本里面都支持,这样的话呢,兼容性更好。
18:05
好,我们用这种方法就可以把地址取出来了啊那。当然这个取地址的话呢,啊,我们好像说过一个更简单的方法是吧,这这这多简单呀。有人说,那你这个讲了半天,还不如我们用原来的秘密呢,那啊,这个是不一样的感觉嘛,对不对,这个是用正则表达式写出来的,别人看不懂啊。开玩笑啊,那事实上呢,人家这个有一个好处,就是挑网卡看。我现在只有一个网卡,那我甚至还可以挑L网卡呀,L网卡我是不是就可以用智能表达式挑L网卡,假设我们这有多块网卡,你是不是给挑网卡看呀,你那个后name你后的那个,那那这个它只显示出这个IP,它没法挑网卡对不对,所以我们有强大的地方。
19:07
啊,所以为什么你要学一些多的东西啊,功能更丰富,可定制性更强啊。好,这是我们刚才给大家说的这个F啊。那这个命令好,那再有就是我们还可以找到匹配这个行的第几个。啊,我们可以只显示前几个M,实际上有了M,我们刚才那个head就可以不要了,M什么意思呢?就是找到第一个匹配的,不过呢,它这个M呢,表示的是匹配的是第一个行。啊,什么意思呢,是这样的啊,我这个。那。现在这个M。
20:02
我们发现匹配root的,如果你不加这个O的话,你看一下。有两行是包含的。那有几行,它就显示几行几个,那现在我可以把这个约定一下,只要第一行。M1。一就是找到第一个满足了,我就后面就不要了,当然这个它是可以指定多少行,比方说我们有两行,那就可以两个,三行就三个就可以指定。只要第一个满足了,我们后面就不要了啊。啊,所以这个M呢可以匹配,所以它匹配的是行啊。Seven。啊。那接下来咱们继续。Q是静默模式,静默模式呢,就是找到找不到它都不做任何显示,找到了默认它会输出我们加Q静默模式。
21:05
建模模式就是屏幕上不打印了。啊,那找到找不到都不打一,然后说找不到他也不打一。有人说,那你这个有啥用啊。我们现在没用,后面会有用。因为找到找不到,表面上看没区别,本质上有区别,因为他们最终会有一个结果不同,就这个结果,这个结果为零,表示成功就是找到了,如果我们在执行,你再看它的结果是零,这个不一样。啊,所以它会影响其他的一些结果,那事实上这个写法是不是也等价于什么?等价于扔到垃圾箱是不是?
22:04
就是找到找不到我都不想显示,我只关心找到没找到,至于找到的是什么,我不关心的,我就可以用这种方法。啊,我只关心成功失败,我不关心有什么是不是。我只关心你的技术会不会,至于你这个掌握了多少我不管,至少你得会啊。啊,这就是。Q。好多命令都有Q选项啊,以后看到Q呢,你都能想起来它是静默模型。还有就是ABC,注意大写A表示after,它表示的是找到这个字符之后,它的后续行也显示,比方说我们找到root以后,我想把它的后面的三行也显示一下,那就可以A3,不过呢,你直接写你也不知道它第几行,那我加个N吧,这样的话能显出行号。
23:10
大家看是不是第一行包含root,那后续的三行它给你显示出来了。第三。啊,当然有后后面的三行,那是不是有前面的三行。那你猜猜哪个单词是不是after,那就是before before前面。当然我们第一行本身就是已经是最前面,它没有前面三行,那也就不能显示了,但是第十行前面是不是有三行七八九十对吧,当然有前有后,是不是有既有前又有后呢?那大C大C就是前后各三行。你要说这有用吗?这有用吗?
24:00
有的时候我们要扩大搜索范围,对吧?哎,发现这个这个一次没有找到目标,但是它周边挨着的可能就是我们要找的目标啊。对吧,所以我们用这种方式可以扩大寻找范围。尤其我们在寻找某些字符,它没有特殊的关键字。你直接拿这个关键字来匹配这行,它匹配不出来,因为这行长得太普通了,普通到没有特殊关键字可以用来搜索。但是他身边有特殊关键字的行。他身边那一行,他隔壁那一行,他有特殊关键字,我是不是就通过间接的手段,先把他隔壁那行找到,然后利用这个A呀B呀,这种方法是不是就把他找到。是吧,这个现在不是有一种破案方法吗?这个破案方法大家听说过吗?就是几十年前恨不得有一个人犯了法了,比方说留下了一些这个生物特征是吧,啊,DNA啊什么留下了,但是呢,以后他几十年以后从来没有犯过法。
25:09
所以在这个第一库里面查不到这个人。查不到这个人,那所以就没有办法抓到这个人是谁,但是他的亲属是吧,他的亲戚啊,直系亲属可能犯法了。犯了法以后,一采集DNA,发现他和几十年前犯法那个DNA非常相似,是不是有亲属关系啊,所以利用这个亲属关系,间接的就把几十年前犯法的这个人就抓住,现在很多几十年前那个贱案都是用这种类似的方法,好像是什么银川的什么是吧,白银案是吧,好几个案都是这么这么来抓的啊,都是这么被抓住,所以这就是利用同样的逻辑啊,那比方说咱们来是一个这样的工具啊,叫扫描工具,这个扫描工具呢,有一个叫n mapp的,这工具呢,看装没装没装,装一下。
26:13
这是一个扫网络扫描器,这个工具呢,可以来扫描整个网络中有哪些主机存在。黑客一般都喜欢用这个工具来扫一下是吧,看看这个哪个哪家哪户是大大户大大是大户人家是吧?扫出来以后,我是不是就可以想办法来看看里面是不是有什么值钱的东西来转转扫描器。他这个工具需要单装一下啊。行,那这个这个。他又找不着我的那个光盘了,我光盘他的路径。
27:05
和我原来那个路径不一样,嗯,我看一下找不着。这个是C盘下的SOS,要这个是不是上面没有这个8.2的最新的ISO文件啊。你这没有八点的会员,你没跑吗。没有,8.2的服务器上有吗?没没没有考虑。8.2是比较新的,有可能这个之前还真没有。
28:07
这8.1的。那就那就下一个吧,中午抽空下一下吧。啊啊,那那我这个地方就把这个样本改一改啊,不走本地光盘了,把这个删了。这个就不能用了。
29:05
嗯。好,然后呢,装上以后,我们可以用n mapp来进行扫描啊,扫描的时候呢,我们可以用SP扫描,咱们我现在这个环境里面啊,这个网段里面有哪些机器,我就可以来进行扫描。你看如果他发现有个主机是可以访问的,它就会显示这个主机的信息,大家可以看到这边已经报告有一个10.8的机器是up的,其他机器呢都是down的,因为我这个环境里面没有其他的十点网段的机器啊,大家看这里面有190。190 190是谁呀?啊,怎么还有个190呢?这,这个教室里面有人配190吗?
30:03
我估计是啊,教室里面有190,那他这显示个190的地址。哎,我这就开了这几个虚拟机,没有190了。那现在我们不管它了啊,然后这扫出来以后,你能看到这个地址,但是我们现在关心的什么呢?就是我想关心的就是哪些IP是可访问的,那么我们发现你能把这个处于up状态的主机要找到的话,这个有没有关键字可以作为扫描的过滤的关键字条件来进行过滤啊。你看这个四点点八啊,4.7是up up的,但是这里面这个条件,这个里面的这一行,它没有任何和别人主机不一样的地方作为关键字,所以你直接拿这行作为过滤条件是不行的,因为当状态的不也是这样啊。
31:02
是不是up可以啊,Up可以,但是up这一行本身没有用啊,光up有什么用,我们关心的是不是在上一行,所以是不是方法他就明白了应该怎么做呀,我们是不是应该去过滤。包含up这个关键字的什么前一行。前一行就是我们想要的那个IP,是不是哎,就可以找到了。好,大家看找到了吧,是不是前面那一行就是我们想要的,那当然想要的,那我们接下来进一步的再把那个杠,比方说我们就想要这一行,那是不是再过滤就行,那再过滤,比方说这个就可以做关键字了吧,这个可以做关键字了吧,那我们就可以。把包含这个行的关键字找到。啊,看一看。
32:04
哎,这不就找到了吗?是吧,但是找到了以后,接下来我们还要留下他的IP,不要前面那个什么n MVP report或不要了,那这个怎么弄啊。我光有IP,别的都不要,我就想知道咱们网络里哪些IP是可用的,将来我拿到这些IP是不是我就开始挨个就开始攻击了是吧?这小偷不都是这样吗?先猜猜表是吧?看看哪些家里头大户有钱,看拿个小本一抄,接下来这就是将来未来的目标了。是吧,那这个怎么弄啊,这个是不是我们刚学过cut可以取吧,刚学过cut可以取,当然实际上用能不能做到。Gra也可以啊,我们刚学完,可以先先用修先复习复习cut吧,Cut是用空格作为空格符,取第几列,第五列对吧,第五列,哎,这样的话呢,我们就把IP地址可以取出来了。
33:11
是吧,除了用gra,我们现在不是刚学完啊cut,那我用杠什么杠O,把那个符合IP地址约定的过滤出来不就行了吗?当然实际上它这个里面,因为它简单解入了,不就是数字点嘛,所以我还可以更扣个了,就是零到九加个点啥,哎一个以上,管它几个呢,反正是哎一个以上。对,这个因为我们要用扩展论表达式,这个用了。是吧,这样不就行了吗?OK了吧,然后这个东西是不是就可以搞出来,将来这就是我们将来是吧,可以搞破坏的目标了,哎,那这个机器这不就是将来我们的目标机器了啊。
34:14
这是攻,攻击的目标就出来了。那黑客不都这么玩的吗?好了,这是我们刚才给大家讲的啊,这样的一些用法。好,那明白了这个逻辑,那接下来我们继续来看的剩下的一些选项啊,比方说W选项,E选项,E选项它是互的关系。就是如果我想过滤多个符合条件的内容,比方说包含root或者包含。啊,这个别的符号啊,比方说不包含root和包含王这两个都包含,那这时候我们可以用杠E就可以把它串起来,包含路的,包含王的行。
35:07
你看是不是可以啊,事实上我们不用这种写法,因为GR写法它不是称这叫表达式吗?这种表达式是不是我们也可以表示互的关系,怎么表示啊?或者是不也可以。这是不是也是包含的意思对吧,是不是一样的啊,或者是速写。好,那另外呢,我们还可以匹配单词,匹配单词说的就是我这个只是包含这个单词。而不是说包含这个字串,如果我们直接这么写,就是包含这个字符串,我想匹配的是入的前后不能带东西,那知道W呢,这就是单词了,那这个就不满足要求,实际上我们这么写就等价应用正则表达式的怎么写。
36:11
是不是这样写啊,实际上它等于这样写啊,W等这这样写。知道吧,啊,那当然你要是前面比方说加个什么这个分号,你们前面加个横线,这是符合要求的,这是符合要求啊,因为这个属于特殊符号,它不是属于单词内部的信息。是不是这是没问题的,好,这是咱们那F呢,是文件名,就是根据这里面的文件定义的正则表达式来进行扫过滤,什么意思呢?是这样的,我们可以写一个这样的一个文件,这个文件呢,它是用来实现过滤的,比方说我们就写一个什么呢?写一个正的表达式。
37:03
写一个这样的写写法脱字符到了。啊,这里面写了一个正能表达式,然后呢,我们去实现一下这样的功能,p.tEST后面跟上这个F,啊,后面跟上FSPB。好,大家看它起到了一个啥功能呢?起到啥功能是不就是把这个里面的正则表达式就放到文件里去了,我就不单独写了,然后杠V是排除啊,就是排除了符合这个则正则表达式的,那这个是不是就表示空行,所以空行这不就没了吗?你看这里面就没有空行了,原来是在空行,这不有个空行。是吧,所以你可以把一些经常写的正能表达,比方说IP地址,IP地址一个正能表达式是不是挺麻烦呀,所以我们是不是就可以把它干脆写在这个里面下来,下次反复用不就得了啊?我们刚才不是写过一个IP地址的正的表达式在哪呢?找一找这个是不是就这一串。
38:17
我们是不是以后就可以考虑把这串放在正则表达式里面啊,那我们就把它写到这个叫IP这个正的表达式啊,正的表达式。随便写,写在这。好,然后呢,我们现在就可以用grape杠,F FP test。是不是从中进行过滤了,比方说我们过滤一下F3这个。当然我用的是扩展的那个表。那没有,这不就可以了,以后就省事。反复用。啊。那此外呢,还有一个RR是递归,这个用的非常多,递归呢指的是文件夹,那就是如果我们想搜索一个文件,那这个简单,我想在这个文件中找root字符串,这个简单。
39:13
那问题是我找的文件,它不是一个文件。是ETC下的所有文件,我想关心一下ETC下哪些文件里面带密码这个字符串。那么芯。但是星的话只能找到ETC这个目录,直接下面的文件列表。有些文件夹还进不去,所以这个怎么办呢?它如果想进到子目录里面RR,它就会进到每个子目录里面找到文件,一个一个去进行查找,看这里面都带pass键,这是不是就将来想找东西就方便了。我就知道这个目录下哪些文件里面包含这个字符串。这个搜索还是挺隐隐意义的,有时候你想找哪个文件里面带这个特定的某一个微音字,这种方法轻松可以找到。
40:09
递归。R呢,实际上也是递归,不过它两个呢略微有区别,这个是软链接,是不是如果软链接它就进去,而这个呢,是软链接不进去的。啊,软链接就是这个文件他不进去了。啊,这是它的一个区别,好,这就是grape命令的用法。那现在再来看这个例子,这个例子面试的时候曾经也说过,那现在大家可以对比一下啊,这两个文件,一个文件叫F1,一个文件叫F2,这个F1F2呢,有些行是一样的,有些行是不一样的,那我们这个问题好像问过。就是要找出两个文件的共同行。上次讲过这个东西对吧,不过今天我们学了新的命令。
41:00
怎么实现?啊,这两个文件有些行是一样的,有些行的不一样。我们要找到这两个文件,大家都有的好。啊,比方说我们就写一个ABC123。啊,然后有个F2,这里面有一。A3C啊,当然有些行,大家都有些行的不一样。好,那这两个文件我随便构建了一下啊。
42:03
啊,这两个文件一个是一,一个是F2,现在我们要找到这两个文件,大家都有的,好,上次我们讲过一种方法怎么做来着。这面试题啊,面试题啊咋做,我们当时是怎么做的呀?F1TEST f2,然后四排序,然后取啥。我们要取它的大家都有的行,那都有的行,肯定重复了吗?重复了我们怎么显示unique,重复的是什么?显示是不是D呀。是D吗?D不就是你有我也有吗?就是相邻的地压,那就重复了。是吧,那不一样的怎么查来着。
43:04
啊,大家都是不一样的。啊,那现在我们有了grape以后,我们怎么做grape可以把其中一个文件作为过滤条件啊。大家看得到的结果跟我们刚才这个写法是一模一样的。是吧,哎,他这支持不支持排除啊,如果是排除这是五和八,那这个和我们刚才说的这个不重复好像是不一样啊,那排除排除来它不是这个意思啊。那么这个写法就是把F1作为了过滤条件。那执行F1的时候,那么把F12作为要处理的文件。
44:02
然后读一行,看看它里面是有A吗?有B吗?有C吗?是吧,如果有就把这行打出来。没有,那就看下一行,一行一行过滤。是不是,所以这样的话呢,也能实现找出文件的相同行。好,这是这样的一个逻辑,那现在咱们再来看一下咱们分区利用率。最大的。这个。使用情况。分区利用最大的值。分区利用最大的值怎么查呢?现在我们要找到当前这个硬盘中分区利用率最大的这个数字。
45:01
啊,当然我们一眼就看到了,13%是最大的,现在我们要写正则表达式。啊,或者用前面咱们讲过的这些技术啊,来解决这个问题,找到分配利率最大的。分区分区,什么是分区呢?这些不是分区,这些都是一些内存中的空间,真正的硬盘分区都这些,所以我们是不是先过滤一下就行了,怎么过滤呀?是不是DV开头,当然光盘也不要啊,我这儿可能还有光盘,光盘是以什么开头的,DVSR0光盘,所以硬盘通常来讲都是SD什么什么。那就是说我们以DVSD开头,这些就是我们想关心的硬盘分区。啊,所以我们就可以这么搞,RI以什么开头脱字符,是不是就把我们想要的分区找出来了,分区找出来以后,我们目的要找到它的分区利用率最大值。
46:04
啊,就是找到那个13这个13这个值最大值我们先找出来,找出来以后我们就可以判断它啊这个值是不是大于80,大于80我就赶紧报警了是吧?快满了吗?啊那这个问题是我们怎么找到他咋找。咱们曾经用过别的方法,不过我觉得今天咱们就用grape吧。啊,换一个方法啊,这个面试的时候,人家出这种题,我建议你们如果你知道三种方法,你都给它写上。这样的话,显示你的这个雄厚的技术能力。啊,别人会一个主就不错了,你会三种,马上对你刮目相看。那所以我们前面的方法我就不说了,前面用过,那接着我们今天不是学了grape了吗?那我们用grape法怎么把用起来。
47:04
咋整?哎,以百分号结尾啊,那就是百分号结尾,那百分号结尾那就是这这百分号哪有结尾啊。嗯,对词尾词尾对吧,啊词尾那我们怎么去表示是数字呢,零到九,当然你也可以写那个DJ啊,我就写零到九了,几个呢,一到三个是吧,这三个以内吧。是吧,三个以内,然后呢,杠E就扩展的这个表达式后面再跟一个什么。而且呢,这是单词,单词的话。
48:00
前面这东西是不是一定是单词。锚定一下,但是实际上不卯也行,因为具体这里面,它前面没有什么,前面有个空格。是吧,啊,这样的话呢,我们就可以找到它了,看到没有,当找到它只是第一步,我们是不是要光用这个数字,那这个数字我们是不是有个O啊。对吧,这不就拿出来了吗?拿出来以后呢,当时个百分号也用不着了,百号用一下就完了呗,那咋办呀,这是不就可以把它干掉,把它删了不就行了吗?啊,把这个百分号删了。然后呢?哎,你在排序数字排序第一个。完了,这不就拿到这个分区利用率最大的这个数字了。当然,实际上这种方法呢,有点繁琐,因为我们用了两个gra,能不能合成一个呀?
49:08
能不能合成一个?俩柜能不能合成一个就别用了,能用一个就别用俩呗,那咋弄啊,合成一个?那这是不是就是把它写在前面脱字符。点心。那当然我们这样做的话呢,它是找出来什么呢。那这个是把那个整行就给我留出来了。是吧,归出来以后呢,我们问题是想要一个数字。啊,所以你把那个行过滤出来以后,我们要那个数字,那个数字是百分号。加前面是数字加百分号,所以你要合在一起的话,那这个东西它单独过滤不出来吧。
50:07
你这样过滤的话,就是把这行找出来了而已,嗯,找到这一行还不够啊,因为我们要的是那个后面的数据。因为grape呢,它不支持所谓的搜索替代功能啊,所以我们现在没有办法一步到位。如果如果能支持正则表达,这个正则表达式再加上速度替代的话,那这个就方便了。啊,不过呢,我们把这行先过滤出来了啊。物流传来,那现在目前来讲,我们直接想把它合在一起,没法合。啊,你只是把它过滤出来而已。嗯。好,那么这行呢,咱们就找出来了,找出来以后,哎,这个地方。把这个数字拿出来。数字拿出来怎么拿?
51:05
用那个啥。那实际上这里面就没有用到这个,我们只是还是用刚才那个方法了,那没有起到合在一起的效果,因为你我们这样挑的话呢,是挑不出来它那个,你只是把这行过滤出来,你挑不出那个数字来。所以这个命令还目前还不是想象那么强,那我们后面讲有些命令是可以做到的啊。那这边我看看我这个之前写过的一个命令啊,这个是咱们以前传统的写法啊,今天呢,我们学习grape,我们就用grape来来实现了,Grape呢,我们现在怎么做的呢?就这么做的。啊,这个写法。这个写法要把它写在这,但是这个写法呢,通用不通用啊。我们在3S7上能不能执行?那我们来试一试,在生度期上执行有没有会导致兼容性问题,是不是自动器上也能执行这个命令通用?
52:13
当然这个写法并不是唯一的啊,那我们之前写过这种写法,现在也可以换成其他写法,都完全没问题,那事实上我这个地方我连TR都不用了,我用来彻底做行不行?也可以,那就光要数字呗,再来一次是不是就光留下数字了是吧?这回TR都用不着了。所以我们还可以进一步的再去。实现看到了吗?所以这个方法呢。TR命令。
53:01
也可以不用了,有了新的方法了。啊,所以这就是我们目前用到的分区利用率最大值,那这边还有一个就是要统计目前哪个IP。和你当前等级的连接数最多的前三名。啊,前三那这个是我们之前写的,那所谓连接呢,就是这个意思,他这有一个状态看到没有。Establish establish呢表示连接状态,那这个连接状态呢,表示正在连接,我就想查看处于连接状态的到底哪些IP正在连。
54:07
啊,当然我这个连接数太少了啊,我找一个连接数多的,我说我们那个服务器,我那个服务器的IP是我记不住,我就用这个名字来访问。密码是。927的多个号。六点吧。密码是啥来着?呃,好像是这个,我得想一想,每次都得想一想。
55:07
好了,那现在你看我在我这个机上看一下它的连接,大家看到这边有establish连接状态。我就想把这个处于连接状态的这个远程主机的IP找到,而且要找到每个IP它的连接次数。怎么做呀?是不是就可以用这个过滤过滤条件,以它为过滤条件,这不找出来了吗?啊,找出来以后,我们要拿到对方远程主机的IP,它连接多少次。那这个怎么做啊,是不是要找到这个地址啊,那这个地址怎么找。嗯。
56:00
啊,咋找啊?啊,这个用T可以吧,就是这个用卡取嘛,Cut取,比方说第一列第二列,当然这个地方你要用空格作为分格符对不对,或者呢,用冒号作为分格符行不行。啊,用冒号分格符可以不可以啊,先用冒号做分格符,当然冒号做分格符的话,那你这个是第几列呀?啊,你可以先T把这个空格先去掉嘛,对吧?哎,也可以也可以,那我们愿意用TR。把这个多余的多个空格压缩掉,压缩成一个空冒号啊,压缩冒号,压缩冒号以后在交给他,这样的话,是不是就这个冒号跟分格符就直接比较清晰了,第几列啊,123456列吧,第六列啊,这个后面是不是就轻松简单了,然后杠C。
57:23
然后再去排下去,这就行了吧,当然你要想过滤前几个,那再加个就行。是吧?哎,这就是远程主机,它的这个访问,这面试老问这个问题啊。那我这个连接状态还有一个叫s SN ta这个A呢,它可以显示出当前有多少种不同的连接状态。
58:01
大家看这里面是不是有Li呀,有time呀,那现在将来面试的时候,人家问你说我的状态。各有多少种,比方说位有几个,有几个,是不是有几个,这个怎么办,怎么做。这个我们先找到这种状态有多少个,那像第一行是不是就不要了,第一行不要了,后面的我都要,那这个怎么做呀?呃。你可以把什么把这个给它过滤掉。是不是可以啊,是不是就是把这一行过滤掉了,没了吧,没了以后这个取第一列就行了吧。
59:01
空格,这个空格符取第一列。取出第一页了以后,那是不是就简单了,那我们就做个排序,然后再统计一下就可以了。这以前面试也老问这个题,这是面试题啊。面试题啊,当然我们刚才说的这个group也可以用别的方法,咱们用过别的方法吧,上次讲什么来着,就是不要第一个T杠什么加二是不是也可以啊,哎,加二你看这个它的变化啊。啊,确实可以做到,所以这个方法也是可以的啊,这面试常问问题啊,常问问题好我把它都放在这,这个是连接数,那么下面这个呢,是它的各种状态。
60:04
这都是面试必问的,这是连接状态的统计。啊,这就是统计的结果。好,其他的应该都讲过了啊,这个IP地址啊,这些都讲过了。这都是各种我们前面讲过的。嗯。啊,这个面试题是算出所有人的年龄的和啊,就这个小明小红。多大?小强,那现在要统计这个人的年龄有多大?全部的年龄这个怎么统计?这也是一道面试题啊。
61:02
面试题啊,这个这个叫A里面有小红小红小红20小明啊小明22。啊,小强是吧是吧,哎,就就这个意思啊,那现在要统计所有属于这个里面的人的年龄总和。咋统计咋统计啊。那你至少得先把年龄拿出来吧。年龄怎么取什么?
62:02
然后呢,后边跟数字是吧,那就是零到九是吧,哎,一个以上这是不是就数字就取出来了,取出数字来只是第一步而已啊,那我们要把这些数字加起来。怎么加把换行符,换行符呢是斜杠N替换成加号,但是最后又多了一个加号。你这个还多了个加号。这咋弄啊?
63:01
我得有个问题,可能打不过。那我们用这种方法,它是竖着的,还记得我们好像有一个命令可以把它横过,有朝一日横过来,这个命令是不是有一个选项叫什么来着,是不是横过来,而且我还可以把分割符替一下。不是它这个分割符可以指定吗。就是字符和字符之间的分隔符,用什么指定来着。配色命令不有一个指定分隔符的选项吗?啊叫叫什么来着什么。小D,是不是啊小弟。
64:01
这个这个配置在这这边这边有一个指定分格符吗?那我们可以用3D。指定分隔符,所以我们就用指定杠,D是加号。完了。知道了吧,啊,当然这个只是一种答案啊,这个并不是唯一的啊,这个只是说一种答案,那我们用的是。呀,怎么复制了这么多。刚才敲的命令去哪了?啊,这就是。这样的一个结果啊,我看我这边。有一个答案。
65:03
啊,这个命令,那这个命令怎么写的呢?是这样写的啊,你看我这个换行符,然后把高这个写法呢,就是取数字取出来就全用gra啊,你看这个地方全是用grape来实现啊,用grape来实现,当然我们今天又学习了新的一个写法。写很多,所以这个写法有很多种啊,都可以显而易见配的是不是更加简单了,对吧,所以这个所以说要求大家还是要多记一些命令啊,你命令记得越多,将来不同的场景下用起来显而易见,这个效率上还是有比较多的变化的。啊。年龄好了,这就是我们给大家讲的这个正能表达式和命令,那么下午呢,我们又开始学习一个新的技术,脚本编程啊,中午好好休息啊,下午又开始烧脑了啊,下午再见。
我来说两句