00:00
大家好,欢迎大家继续收看上硅谷的云计算课程。我是沈超老师。那这节课呢,我们开始来学习一个新的这个命令散,这也是文本三剑客当中的一个啊,这个。那我们来看看SS它是干嘛的?各位,它是用来对文件当中的数据,也就是字符串进行选取、替换,删除新增的命令,哎,各位,换句话说,这个玩意儿是修改字符串的,是用来修改文本里的数据。那有学员就问我了,那老师我要改数据,我直接用VR来改不就多好。对吧,我直接用VI改多好,V我现在用的很习惯,我何必还要单独学这样一个字符修改的方式,用字符串,用命令来修改,我很不痛快。但是啊,我们看一下,比如说。我要修改一下我的这个学生的这个文档,VI修改是这样,看看VI打开这个文件名回撤进入了是命令模式,我要改的话,我是不是先要按字母A进入输入模式,然后把它改过来,然后还要按由人来按ESC,问号WCWQ保存是不是才能退出来。
01:15
对吧,各位。我问你这个东西它是需要人来手工跟计算机来进行这个交互处理,是不是才可以完成VR的操作,那我问你如果写在程序里。你的这个VI当中要求你输入A,你怎么输。各位听明白了吗?我们一直说啊事儿很难做到人机交互啊,就是人和计算机和程序之间进行交互。计算机在这等着,你得输入一个A,然后才能继续,那我问你,你如果是人直接输入输就行了,那我问你,你拿12程序,你怎么给他输入A。哎,你不输字母A,你是不是就进进入不了这个输入模式,你是不是就写不了数据啊。
02:00
对吧,这个事儿恰干不了。这个东西对12来讲太难了,根本就12语言就根本完成不了,后续啊,我们会教你另外一种方法来实现,这种情况就是说程序等着我要人来输,我可以调用其他语言,调用PE语言来完成,但是那个也不能做太复杂的操作,比如说编辑文本,这个就太复杂了。这个东西你还要先看文本里面有什么,然后才能处理再去修改,这个事是完成不了,或者说VI这个命令,这个工具只能给人来用,他没办法给程序来用,没有办法给程序,那这个时候散的命令他就。就必须要用到他呢,也是修改数据的。它的缺点它更麻烦,它必须用特定的格式,也要有正确的选项和动作才能修改它的数据。但是优点,它这条命令一回车就可以直接生效,不需要再等待有人来输入,能理解吗?
03:01
也就是说,我可以把散这些东西写在脚本里,把这个命令直接写在程序里,然后呢,我一执行脚本,这个数据就会被更改。或者就能被调用、查询、替换就能做到。那这就是说算的,我们一开始看我就觉得哇塞好二啊,不就是改数据吗?我直接用Y改多好啊,各位你想明白啊,你那样想的原因是你是站在人的角,人的角度来考虑的,而为什么我们说散的这种文本,三剑客这个rap aw k和散。这三个东西是我们少海编程必须要用的东西,原因就是这些东西是站在我们的程序角度来考虑,我如果要想进行文本处理,这三个家伙少谁都不行,他不是说你人看一眼就能结束就能就就能就能运行的,这个事儿听懂了,所以啊,小心啊,大家要理解啊,我为什么需要用send来进行数据替换,听明白吗?因为这是程序进行数据修改的唯一方法,或者说最主要的法,不能说文讲就是最主要的方法。
04:06
OKV行好,那理解了这个东西的重要度,那我们就要看看它怎么用了,它的格式相对来说也是比较复杂,但是比aw k强多了,比aw k强多了,他就是啥选项,然后动作单引号扩写动作,然后文件名选项,常见的有这些动作,常见的有这些,我们边讲边说,一个一个来啊,那第一个就是最简单的动作打印。其实就是输出,那我们send打印第二行,这这个2P的意思就是打印第二行对吧,那我试试我这个里边看我的,呃,Student里边有这么多文件,那我们三单引号2P打印第二行。然后ST我们,但是你会发现啊。他把第二行多打一遍,看见了吗?那么其他,但是他其他行也打印了。这个原因是我们说如果你要是在这个。
05:03
选项中不加杠N,它呢就会干嘛,除了把这个,它会把所有的数据都输出到这个屏幕上,哎,如果不加杠N,那如果加入高N,那么则只会打印这个散处理的数据,换句话说,我这里没加高N,所以它既把第二行多打了一遍,但是又把其他所有数据呢,包括第二行也重新完整打印一遍,那么如果只想看算的处理的数据简单,只要在这里加个杠N就行,那这样的话它就会处理,就是它输出了,就是你指定的这个号,看明白了,这就是杠N的作用。好,那这是。打印的动作。其次呢,我们来看看文本的处理,A就是openend的追加,C就是这个替换。然后I就是你色插入,那这个斜杠的意思是,如果你要是处理多行,你添加多行的时候,那除了最后一行,每一行都需要用这个斜杠来代表数据为拦截,就是说如果你要添加多号,如果不添加多行,那这个就没什么意义啊,你就不用写这个斜杠,光写A就行了,那么是啥?比如说我这里。
06:12
想要删除第二行到第四行,或者说我们删除第二行到就是第二行到第四行吧,为啥我们看一下原始数据,我们输出一下,然后呢,我们杠N,然后我们删除第二行到第四行D,你会发现不要加杠N,这个时候加杠。他就会把处理它是删除嘛,删掉了处理你怎么看对吧,那你会发现删完之后看第二行到第四行都删了。但是第一行还在啊,那为啥这样写,我想说它的是一个范围。他这里二逗号四指的是234,好像全赏。它指的是一个开头和结尾的范围,OK,所以用的是二到四,OK,那但是啊,我说啊。这个处理它并没有写入文件里,我打开文件。
07:03
文件的内容还在,我只是把这个字符串在这个屏幕上删除了,但是里面的数据还在,没有修改文件,只是把输出的时候把这些数据给过滤掉,那如果要想在操作了同时修改文件怎么办?就需要用杠I了,I的作用就是把这个数据呢,直接修改到这个文件里,直接修改文件,而不是屏幕输出了,哎,换句话说,如果我在这个删除了前面加个杠。那好了,这个时候这个文件里的这两行数,这三行数据就彻底没有。所以啊各位,如果我真的打算修改文件,加杠改选项就行,但是啊,这种删除你最好就别改文件,改文件干嘛,没了没没了是没了,数据都没了,你是不是就没得练了,没得玩了,对吧?好知道一下这个是删除啊,Delete是删除这个动作。可以啊,那追加呢,那简单看看我们。
08:03
这是原始数据啊。那我们算的,然后呢,在第二行的后面追加,追加什么呢?追加一行111吧。啊,随便啊,就写点啥就行,好,这个时候我们就可以看到在第二行的后面多了一个111,对吧,那文件变了吗。我们看一下文件的内容是不是B没变原因要想变怎么办?哎,那我这个加一行是不是就无所谓了,对吧,那我们看看加个啊,这个时候看屏幕上是不是就没有任何提示了,但是我们看一下文件的内容,诶文件内容是不是就发生了改变,看看着看。对吧,这就是杠I的作用,这。啊。小心啊,杠二是选项啊,这这这这别搞错啊。在单引号之外啊。那这里还有一个选这个这个动作是II是啥插入A是追加,I就是啥插入那啥意思啊。
09:01
反了,又加了一行,你加就加吧,那我们可以看到这里有两行对吧,那我们干嘛,我们看。散,我们别往里写了。我们动作I22I,在第二行前面加入一行。哎,这个就跟我们的这个V是一样的操作了,A是在指定行的后面写,I是在指定行的前面写,OK,那这个时候可以看到我是不是在第二行的前面加入了一行数据。对吧,当然这里我没有加杠I,所以没有写入文件啊,没有写文件,只是在屏幕上输出一下,这就是A和I的作用,那除了有A和I呢,那我们还可以干嘛替换对吧?C就是替换。啊,这里啊,这个例子的意思就是,如果你输入的东西是两行数据,前面为什么说这块要加个反斜杠呢?看第一行数据太长了,我写不下了。
10:02
我为了怕他这个不让它自动换行,因为自动换行有时候这个隔断的是这个把一个单词切成两半,有可能写错,我就写一个单词,然后换行,后面写第二个单词,这两行数据其实就是就相当于把这两行都加在这个文本里啊,啥意思啊,来来来试一下。上这个。加了个杠222行啊,回车看没执行,为啥单引号只打了一个,没有另外一个单引号不执行,那我怎么办?再加上3333单引号,然后指定的是这个文件。SQN,好,那我们可以看到在这个第二行前面追加了两行,这就是换行符的意思啊这里啊知道一下就行,那替换呢,只要把它换成什么,把它换成这个。这个就行,把它换成C就行,这就是替换啊,那。
11:01
呃,那我们试试啊,直接试试就行了,那我们干嘛,比如说我这两个2223,呃,不是我现在的数据,看看原始数据啊,啊,现在是不是只前面没有写入文件,是不是只有第三行,第四行是这个对吧?那我看这个格式很别扭,我觉得它不是我们标准格式,那我们怎么办?把第三行替换为,把第三行整行数据替换为,比如说IG是四,然后名字是ABC,然后成绩是11223344,然后。44.5啊,这个没错吧,四个成件好,然后针对的是这个文件,那我们可以看到它就会把第三行给换掉啊,当然我这里加的是空格,他就是用空格来做了,呃,咱们这里啊,这个命令行里还输不了制造符啊,就这是说你就知道这玩意儿能替换诶,他可以按照你的需求替换,当然这个数据没有写入文件,为什么要想写入文件,是不是要加杠I选项对吧?好。
12:01
这是行行替换。小心啊,这种想法也行。就比如说我先用cat输出管道符,交给它处理也一样,或者直接这样写也行,这个随你看,这个格式都是合理的啊,这是。我们的这个基本操作啊,这就是我们的这些基本动作,哎,这些东西动作的作用,那各位。我们这个替换。他只能去换行。把整行是不是就替换掉。但是我想做的事情是替换某一个字串行不行?可不可以,当然是可以了,那怎么办啊,哎,你现在看我我现在这个数据已经是这个看,那我把这两行删了吧,这两行留着是不是很别扭,删除的选项是D啊,我先把它删了,那我干嘛。散,然后动作是删除第三个。呃,这个第三行,那我要想删第四行,我是不是再给他敲一遍,不用啊,看我这里可以干嘛,允许你加杠一选项,这个选项的作用是允许你执行多条动作,允许执条执行多条动作,格式是这样往下找一下。
13:16
如果要想执行多个动作,那我们是这样的,钢引号直接扩多个动作,中间用分号隔开就行了,那我们这里可以了吧,就是杠一,我杠一的作用是执行多条动作,否则这里边只能删一行,那我现在分号再把D。四行也给删掉,哎,这就是我的这个内容,看这是不是就恢复了啊,当然记得把它写入文件,把它写入到文件里,把整个文件都改掉,那这个时候。呃。杠二。不认识。把它写在前面。好,这两个,因为它处理的是多条命令啊,所以这个杠E需要紧挨着它的动作,杠I写在前面就没问题了,那这个时候可以啊,这就是删除,其次加了杠一可以执行多条动作,大家记得这个事儿啊,就是这里这个D删除的作用。
14:10
删除。和这个执行多条动作可以啊,然后呢,我们来看看字符串替换,这个C是行替换,它能只能替换整行数据,那我有时候我只想替换某一个数据,那这个时候怎么办?我就需要遵守这样的格式就行了。行化为S,把旧的字串替换为新字串J,你有没有觉得这个格式好好眼熟?看我后面写了,和我们VI当中的替换格式是一模一样的。OK,那我们先试试啊,它的整个范围是什么样的,比如说。Cat。啊,先看一下原始数据,我把这个李明老师的名字改一下,改成波老师可不可以啊,可以啊怎么办?三的我不需要加行,我如果不写行范围,那么就代表切换整篇文档对吧?那我们就S切换。
15:04
把谁?大写的里边。大写的L,小写的M替换为波老师好J。然后呢,后面加这个文件名就可以了,那这个时候我们可以看到这个里边老师就被替换掉,替换指定字符串,诶这就是他的选择可以啊。那。比如说我想把我的成绩改一下,当然这个没有写入到这个里边的内容,对吧,没有写入到文本,要写写入文本怎么办?杠啊对吧,我想把我的这个成绩一下,74分太低了怎么办?做个B对不对,那我们就可以干嘛,这个S把74分改成99分,然后这不加行号,前面不写行号就代表切换整篇文档,OK,那如果还想同时替换别的呢?那我们分号隔开,那怎么办?我们比如说。呃,再把童刚老师的名字改了,把童刚老师,童刚改成是苍老师。
16:02
好,然后记行了。这个就是计划可以看到啊,首先我的成绩变了,同关老师没有了,变成了这个。这个这个这个这个曹老师,这就是字符串替换的格式,哎,和VI一样,所以啊,如果你把VI的格式记下来,这个反而就好理解好学了,好这是字符串计划,那这上面还有个例子啊,其实都差不多,比如说想在某一行。前面加入注释讲过了吧,跟V是不是一样,在行首是不是加入井号就可以了,对不对?那替换多个是这样的格式,当然啊,如果像切换多个,你可以分开写,比如说第一行写一个条件,只要没有反引号,这个条件不会执行到第二行回车,再执行第二个条件,哎,那如果是分成两行写,中间就不需要用分号结论这个隔开了这个条件,这两个格式都能识别,这两种格式都是可以识别。
17:02
好了各位散的呢,就是这些,那我们看一下,回顾一下,散的东西稍微多一点,所以我们可能这个这个前面直接往后讲了,那我们回顾一下。N的作用只显示你算的处理的哈,然后呢,E的作用执行多条命令对吧,R的作用是支持扩展正则,I的作用是直接写入到文件,哎,这个读取什么脚本文件,这个其实用的很少,这个支持扩展正则,其实我们也一般用不着这么复杂的,无所谓。动作呢,就跟V差不多了,A是之家,C是行器换,I是插入,D是删除整行,那S呢,就是替换字符串。哎,那有人说老师,那我前面只有行行删除,比如说我只能用自己把整行删除。那我能不能只删某一个字符串呢?那各位如果要是删字符串,就得用这种方式,就比如说就得用字符串替换,比如说我把李文老师替换为空。
18:00
这是不是就是这个删除字符串,OK。哎,小心啊,所以我们VI这里它的动作它只准备了行删除,没有指定这个准备字符串删除,要想用字符串删除,那么就得用这个替换的方式来做,所以它既是这个行替换啊,字符串替换,它也是字符串删除,哎,搞清楚好各位,其实这个S命令要比我们的aw k要简单的多了。对吧,但是你要理解的是,就是什么我什么情况下要用三种。什么情况?如果我需要在脚本程序中修改文本的数据,那这种情况下我就必须要用散,而不能用VI,因为在程序中调用VI之后,人没有办法给你帮你摁那个那那个什么进入输入模式啊,保存退出没法摁这个键,所以在程序中修改数据是不能用VI,只能用三。虽然它比。
19:02
看起来比V要繁琐,但是它的好处是命令一回车就能执行,那只要把命令写在脚本里,写在脚本程序里,这个文本就可以被修改,这就是散的作用。好,各位,散的作用就是这些,我们会用就好,那不不能说会用就好,这个东西是可能后期是一个重点内容,这个aw k算的,包括gra,包括cut都是常见的,我们一定要学会它的使用方法,行了,那这节课就是这样,我们下节课再见。
我来说两句