00:00
大家好。欢迎大家继续收看上硅谷的云计算课程。我是沈超老师,那这节课呢,我们继续来看看aw k。那前面我们说啊,Aw k是可以执行条件,然后判断条件成立再执行动作,对吧?那我们前面讲的就是直接打赢动作,不管条件,就所有的都直接打印,那我们这节课呢,就来看看它能识别的条件啊,先看前两个,第一个begin,第二个and begin,就是在程序开始之前,读取任何数据之前,先执行这个动作。按照就是在所有的数据处理完之后,再执行一次动作,啥意思啊,看一个这个例子啊,我们就可以看到是吧。我们前面讲,比如说我们还是这个文档,比如说我要打印名字和这个平均成绩假设,那我们之前是这样的,对吧。Aw k,然后呢,直接是打印动作,没有条件对吧,Print到了二,然后呢,换行啊不是制表符打印到了六对吧,然后。
01:07
针对的是这个文件student。这就是。这个标准打印没有条件的情况下,对吧,那如果你要加一个begin呢?Begin就是在你正常动作执行之前先执行这个,那也就是说它的作用是可以干嘛,比如说我可以在这前面看。它允许有多个小动作ej。哎,大写的啊,那begin在执行你的标准动作之前,先执行这样一行动作,比如说我执行什么,比如说打印一行111。哎,其实也就是说咱已经打印了数据之前先出现一行,这就是说先处理这个动作,诶那这里好像没有什么太大意义啊,确实啊,在这个打印这个东西之前,前面处理个111好像没啥用,但是我们后面有一些这个实验是需要利用这个关键字,需要先处理,然后再执行,那这个我们是要知道。
02:04
那begin是前面打一号111,那按就是后面打印一个意思啊,那我们试试啊。End好,就是在后边打一啊,你所有动作都执行完了,在最后打一一号,哎,是这个意思,好这个。And可能用的不多啊,And用的不多,但是我们begin还是非常常见的,我们当然说是在他前面打印一行数据,没有什么太大意义,我们后面干嘛手工指定分割符的时候,这个是一定要用到的动作,那我们先知道这个事儿啊,先知道。行,那除了可以判断,就在任何条件,就是动作执行之前,先可以干嘛,执行一条数据,或者这个后执行一条,还可以经过这种逻辑判断,哎,各位,那我举几个例子啊,比如说。这个比较常见了,就干嘛看。我先把这些这个姓名这一行给去掉干嘛,看我现在student啊,我是不是先把姓名去掉,就是这一行去掉,为啥我要按成绩来进行换算对吧,所以我就干嘛cat输出,然后呢。
03:15
在里边干嘛啊啊,不用输出了,就直接干嘛grape-V,然后呢,把这个包含有内容的号干嘛给取掉。哎,Sto,那这样的话是不是就只剩这个成绩了,对吧,那我现在干嘛,其实直接杠V也行,看输出在杠V也行啊,一个意思换行符啊,代表这两行是一条数据,对吧,干嘛。第六列大于等于87的时候,它第六列平均成绩就这一列大于等于87,也就是说超出了这个大于87分的学员,我打进他的信念。哎,我可以干嘛,通过判断这个值。来比如说别别八第六列别87吧,86吧,86的话是不是有俩人对吧?那如果是87的话,是只有一个,我可以执行条件来进行运算,OK,那这就是这里可以运行的条件,那我们试试啊,各位看看。
04:18
然后呢感讲aw k单引号,然后呢,我们执行的动作是这个。DO6对吧,刀六把它加大于这个东西,那这个写就行了啊刀六。第六题。大于。等于86,然后呢,干嘛?如果这个条件成立,则打印它的第二列,第二列是名字,也就是说打印综合成绩大于86个人,OK,那这个时候我们就可以看到,哎,李明和同刚俩人的成绩是。大于86了,那沈超的成绩是小于86不合格,所以对吧,我这个就可以判断条件,OK,那这就是这个条件的基本用法,再一个我们说啊,我们要看一下它这个条件的执行过程,OK,它是这样的,看我的文件,先是这样,在这文件数据,然后当我aw k来处理它的时候。
05:16
各位我们说啊,虽然aw k是裂的。对吧,但是aw k处理的时候还是要一行一行的数据读进来,然后处理,处理完再把它接入,所以啊,它的处理过程是这样,如果aw k来处理一个文件,处理一个文本,那首先先判断有没有begin。BEJ。就不写大写了,如果有比例,就执行比begin的动作,这是第一步,比begin先执行。如果没有begin或者begin的动作执行完了,接下来呢?把第一行的数据附在aw k当中,Aw k当中。把整行数据负在到零。
06:00
诶,把这一整行的数据放在到零列,然后第一列负载到了一,也就是这一行的第一列负载到了一列。然后第二列复杂到了。第二第三列负载DO3,以此类推,那这个时候你看啊,如果我没有动作,我先不考虑动作,我就是要打印第二列对吧,那现在第一行发现一读啊到零,这就是整行数学。到里放的是就是这个第二列的数据对吧,那你要打印第二列对吧,那就把第二列打印一下,就把第一行的第二列输出,就输出了第一行的第二列,第一行处理完呢,再把第二行也读在aw k当中,同样整行数据附在W0。然后第一列负载DOLLAR1,第二列负载DOLLAR2,那这个时候一看见还要打进,到这个时候就干嘛再执行到二打进DOLLAR2,接下来依次把所有行数据一行一行的读进来,一个一个处理。这就是它基本过程,哎,那如果这里有条件了呢,那就那就简单了,那也一样,看先把第一行处理进去,哎,我为了把这个数据处理干净,所以我是把第一行这个名字给排掉,通过这种方式对不对,那现在我的数据就没有这个姓名ID这一行,如果这样处理的话,那它就是啥。
07:21
把它。第一行读在aw k当中。对吧,然后呢,我的动作是打印,如果先有个条件我先要啊,先把它这些东西都读进来,就是把第一行读在把整行数据读在DO0,然后第一列读到DO1,第二列读到DO2。第六列读在二六当中依次读进来,然后呢,处理动作之前先判断条件,我这里判断条件,条件要干嘛,第六列要大于等于86才会打,打打印到了对吧,那我们现在看了。我第一行的第六列,它是满足这个条件了,所以把这个刀输出一遍,这个这一行的刀输出一遍,输出完了,第一行就处理完了,接下来第二行读进来。
08:13
读进来之后,判断条件,这个不满足条件,所以这个动作就不执行,第二行没执行,接下来把第三行再读进来,然后呢,判断这个条件他成立了,那么这三行这个动作把刀拉再打印一遍,就打印出来了。这就是aw k基本的这样一个执行的流程啊,当然最后如果你有。再把and的动作执行一遍,哎,整个aw k就完成了,看明白了吗?我这里也写了,看他还是啊,有and,先执行and,那么如果没有and,或者把案子执行完了,就把第一行数据读入aw k,依次赋予W0第一行数据整行附在W0第一列,第二列附在后面当中。然后呢,依据条件判断你的动作是不是执行,我这里如果判断到了六是不是大于,大于就执行动作,不大于就不执行动作,诶然后把所有的数据都执行完,最后执行and and执行完就完了,这就是aw k执行的过程。
09:16
各位。也就是说。Aw可输出之后,你表面上看起来他输的是列对吧,但是他数据处理的时候也要一行一行的先处理,先处理第一行,处理完再处理第二行,直到把整篇文档处理完,诶你要理解它的这个过程,所以这个条件的作用就是干嘛。指定这个条件OK。其次啊,除了可以指定条件,还可以判断字符串干嘛,我这里想判断的是这个刀二当中包含这个符号是含有。SC这个符号是否有,如果有,则打印它的这个平均成绩,说白了就是这个。打印的是这个这个某一个学员的这个成绩就是可以了,哎,小心啊各位,这两个如果要用字符串,都必须用双斜杠把它括起来。
10:06
各位,这两种写法都是可以的,看一种是在刀二里匹配是否包含这个字母。另外一种你就可以直接写字符串了。这个其实里边就是识别的是正则啊。只识别的是正则啊,其实各位啊,我跟你讲,在一些程序,比如说PPT当中,如果要想写正则,你的正则字符串就必须用这个东西括起来,系统才知道这是正字aw k这个语法。Aw k的这个语法和我们的这个PP的就比较接近,那这两个的区别在于啊,这个是在第二列中,在某一列中查找有没有这个字符画,而这种写法是在整行当中,你的整行数据中去找有没有这个字符,其实说这个作用一样,两种写法都可以都可以。只不过这个是需要写列,就是指定只在第二个字段第二列当中查找,而这个呢,是在你的整行数据中的。那如果。
11:06
它里面只包含,就比如说只包含了一列,这个学员姓名只写了一遍,那这样写和这样写是一样的,对吧,但如果是在就多个列里面都有学员姓名,那比如说还有他就注释里面或者是备注里面还有学员姓名,那为了干扰项避免干扰,那有可能就要写这样的方法啊,那现在这个我们现在只有这一这一列里面是不是有学员新品,那我就哪种都行啊,那我们就可以哪种都行,那我们就试试看。那想法是比如说。WK单引号,那我们算一个嘛,到了。第二列当中是否包含,哎,是否包含谁SC小先啊,我这个是大写的,小写的c Linux是严格区分大小写的,还有啊,这是包含对吧,前面呢,我们说了。这个叫做不包含。
12:01
这样写的话就是不包含,OK,那前面这个大于等于小于,这个等于我写一个其实就行了,对吧,那这个就是包含不包含的意思,好,那这里如果直接这样写,就是匹配字符串,其实就是用正则规则来匹配字符串,OK,那其实这里这样包含它也是正则啊,也是正则,那如果在第二列找到了匹配了S3,那我们干嘛?动作打印。他的第六页第六列平均成绩,诶,然后针对这个文绩好,其实就是打印这个用户的成绩,对吧?诶没错吧,诶那如果不写这种,倒不再让它指定只在这一行中包含,那我在整整不在这一列当中包含,我让他在整行中包含也是行的,这个也可以啊,那这两种写法区别在于啊,这是在指定列包含。这是在整行数据下去匹配。呃,两种啊,那如果他对这个数据不重叠,两种写法的作用就是一样的,好,那这是我们aw k的条件,各位。
13:06
各位,这个条件可能,呃,看起来可能还是比较烦的,但是啊,我说。有时候你直接用这个条件,远比你自己去写一个程序要简单。对吧,比如说我这里可能很简单的就可以把这个这个比如说大于86分的成绩就可以提出来,那如果要是没有这个东西,就这样一个格式来判断,大于86,你要自己写程序来判断就麻烦了,你是不是就得把这些值先提出来成绩。然后附到变量当中对吧,然后再写程序变量,写一个循环,这个变量如果大于86分,则打印它的这个陷阱,那简简单单在这个aw k当中可能一句话就能解决的问题,你自己写程序怎么也得十来行。对吧,所以啊各位,虽然看起来这个东西格式很复杂,但是如果你要这个熟练运用,你会用了,你记住了,它远比你自己写的程序来解决要简单,当然。
14:10
我们也碰到这样的学员,这些学员说什么老师aw k的格式,实在不方便来记。我觉得我用起来很不痛快,我宁愿只用aw k就做截取指定队列,然后呢这些事儿,比如说我就想这个判断大于86分,我就用我刚刚的思路放到变量当中来进行运算,我觉得我好理解,我说。这要是在其他语言可能就不行,为啥?那你想aw k一行代码就能解决,你要自己写一个带程序十来行代码,那肯定这一行代码的效率是不是较高。对吧,所以说其他所有程序都是需要考虑它的效率,所以其他程序我们都会要求最简化,你写的越简单,效率就越高。当然这只是一个笼统啊,并不一定说这个简单,效率就高,就程序写得短,效率就高,你的如果这个程序逻辑很差,也有可能很差,但是原则上或者是总体上说,这个是没问题的。
15:09
但是我说在视尔中你可以不考虑这个事儿,为啥我一直说视程序就不是给大范围用,我就是少量用户内部人员使用的,所以如果你真的不喜欢aw k的这种编程格式,我就用12脚本来实现,只要你能实现功能,我觉得问题不大。OK,就用我说的思路,Aw可以把它截出来,然后附在变量里,然后自己写12脚本,来去来做也行。但是明显的能看到这个东西简单OK,好各位,那这节课呢,我们来就来看了,看什么aw k当中条件怎么用。上节课我们只看了基本语法,就是截取指定列对吧,这个就不分条件,你要第二列就会把整篇文档第二列全部打印出来,那这节课呢,我们是不是就可以按照我的指定条件。对吧,来打印我指定的打印第二列当中的,不是打印所有的第二列对吧?好,这就是我们的aw k的条件的这种运用方法,好,这节课的内容就是这样,我们下节课再见。
我来说两句