00:00
大家好。欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。那这节课呢,我们继续来学习字符串处理的,前面讲的这个cut这玩意儿,他没办法拿空格数来做这分隔符,它是截取列,对吧?那如果要想用空格来想这个进这个截取列的话,我们就需要利用到更复杂的这样一个命令,Aw可编程,各位,我写了,它是编程啊,这个家伙可以看成一门独立的语言,它拥有语言的基本特征啊。换句话说,这东西其实是可以写出极其繁琐和复杂的东西的。OK,当然,我说绝大多数情况下,我们并不需要用它来写太复杂的东西。我们说aw k的语法格式更别扭。比share尔的语法还别扭,所以呢,我们的建议是如果能用share尔来处理,就可以不用aw k来做,当然在有些情况下,用aw k来做远比用share来做要方便,我们后面讲的aw k,我会给你举一个这样的例子啊,就是说有些东西用aw k来处理远要比通过的share尔来处理要简单的多,那这种情况下我们还是要建议用aw k OK,好了,简单知道一下,Aw k最基本的作用是就是按这个可以也是截取列,它也是截取列,它可以它比cutt更先进,它可以用空格,当然它也可以用什么,用这个末号啊,用各种僧格符来附这个这个这个截取列都是可以的啊,AWK会更更强大一点啊,好。
01:35
那要想学aw k之前呢?我们先得学一个print f这样一个命令,这个命令是aw k基本输出当中必须要用到的这样一个格式化输出命令,其实aw k的标准输出我们后面会看到它的格式,它能支持print。也能支持。Print它也能支持什么?Print f2个命令都行,那这两个东西在aw k当中基本作用是一样的,只不过一个就是自带这个回车符,一个不自带,但是几乎是一样的,但是在我们Linux当中,我们Linux的命令它只支持print f,没有这个命令,这个命令执行会报错,所以我们为了先讲一下这个命令,我们就用print f来举例讲一下它的格式啊啊,我们Linux当中如果执行print。
02:26
哎,直接会报错了,可是这没有,那普F呢就可以正确执行了,哎,两个报错不一样,上面的报错是命令没找到,这个命令不存在,下面这个报错是你格式写错了,这个格式不对,请你按照这个格式来写,看到了,也就说我们应该通过合理的格式才可以来进行补的输出这个格式比较麻烦,我们就是通过例子来讲一下,它可以按照什么字符串整形和浮点形,所谓的浮点型就是小数啊。这个来来这个来输出小心啊。我们是可以想当然的认为什么。
03:02
这里如果写8.2,那我是不是就认为是八个整数,两个小数不对啊,各位,它这里八点二指的是总共是八位数,其中两位是小数,那整数是不是就只剩六位了,这个八是代表它的总共输出的数字是多少,这个大家注意啊,非常容容易看错,我也不理解它为什么写成这样,你就这直接就按照我们普通格式嘛,前面是八个整数,后面两个小数是不是也行对吧,但是呃。这个还真不是说事儿就这样,那其他语言如果用到可这来输出,格式化输出的话,它也一样的啊,作用是一样的啊,大家注意行,那我们这个待会儿我们再说,跟我们的那个前面的IO差不多,换行符啊,然后呢,制表符啊,我们常见的就是这两个。这两个好,那为了做这个实验,我需要把刚刚的这个student的表格改一下,我要再加点内容,这个为了节省时间,我提前都已经做好了啊,我提前把这东西都写好了,其实这里就是随便编了,就是为了目的,是为了让你干嘛,呃,待会输出的时候,这个膨胀F能够正常输出,那首先。
04:12
想要输出双单引号,注意啊,这个地方的格式是这样的,双单引号。看清楚啊,特定要求格式,然后按字符串来输出,也就是说把这个文档当中字符串全部输出一下,小心啊,普顿F默认是没办法后面直接写参数的,也就是说光写文件名是不行的。他支持的只能是命令的结果输出,然后给他之后交由他来处理,所以用了这么别扭的一个方法。而K就是先调用系统命令,再把结果给它来处理,那换句话说,普F很少单独来使用,它就必须要干嘛干嘛,把它放在这个aw k当中来用才更合理,单独使用的话,这个格式就很别扭,需要先要把命令调用,然后交给他来处理,看到了那么试试啊,Print f。
05:04
然后双单引号按照这个字符串来输出,然后输出谁输出的是高单小括号cat读取STU这个文件的名称,OK,那我们可以看到啊,它是输出,但是他把这些所有的内容就挨着个的输出了,中间没有空格,也没有回车换行符,什么都没有,这就是输出,这肯定不行啊,这种输出我们肯定接受不了啊,对吧?那我们怎么办?要想正确输出,我们就得手工来输入格式,各位。F是需要我们手工来调整它的输出格式的,OK,那各位。得来K之所以能够直接把它打印出来,那是由于写K的这个里面的情况下,写cat命令的时候,他其实已经把格式调整过了。而print f呢?它是需要人手工来调整,那为什么不能直接调用K?简单aw k就只能支持print f,你怎么办?
06:02
那怎么办?或者说这个东西才是程序最基本的输出格式,绝大多数程序都是这样,而cat只是系统写的一个命令,其实它里边这个是不是这个情况,到底是什么情况,其他的程序不一定有。那这种情况下,我们就如果要用aw k,那就必须要会print来调整格式,那这个格式就比较麻烦了,干嘛看呢。看懂了吗?先输出一个周转用。这个贴键把它隔开,再输出一个字符串,再用贴键隔开,啥意思?我这个文档有1234566列,所以它这里就输出了六遍,123456。最后一遍输出完换行看见了。也就是说它是需要你手工来选,我输出几个字符串,每个字符串中间要不要隔开,然后输出多少换行再来一遍,它是这样的方式。他是把这整个的内容就当成了一整串内容,就是一整串字符串,如果你要不隔,他就把它这样连着输出,如果隔他就会帮你切,你就告诉我啊,第一个字符串输完中间加个贴键,那我就隔开第二个输出隔完再加个贴键,它就是这样的最后一个输完。
07:16
换加个换行符,他就会帮你输出,哎这么别扭,哎各位我告诉你。其实命令和程序啊,我们的程序中的输出都是这样,标准输出都应该是这样,只不过你们拿到的输出是经过其他的程序员调整过的,而我们现在是不是要学怎么写程序,标准输出是不是就就算他麻烦明也再去,OK,那其实这个倒也还好,不是太难理解啊,那就行,记着这是单引号,这个小心啊好了。那我这里现在是六列对吧,那我们就团F杠七,哎,这个地方你加不加空格,对存在FF来讲,它不认识,你这里加空格他也不会,输出的时候帮你加空格不会。
08:00
你不加也不会报错,加了他也不会不帮你输出格,他只认识这样的转移符,反斜杠的这种气他才认识,所以为了输出看看得清楚,我们也加一个S。然后呢,再来一个,这是第几个了。第三个再来啊,这个真麻烦啊,第几个,第四个呃,而且容易余123456个,边讲课边弄,这个特别容易出出错,好了空再加一个那个什么。再加一个反斜杆换行,好,这个时候我们可以看到这个家伙是不是就正确输出了,OK啊,当然啊,这个地方呢,空格我加了两个空格吗。这个地方他往后翘了一格,哦,不对,是因为这个家伙太长了,他觉得位置不够,所以这个退,这个退格键翘过来,但是格式是对的啊,没问题啊,是这个。名字太长了,你要觉得很不痛快,我们把李明老师的名字改短点啊。我们。
09:06
我们就没名。好,好了。保存这个时候再输出,那它就正常了,可以啊啊好,这是它的标准用法。那其次啊,它还可以按照什么,比如说你这一列,比如说这是成绩对吧,那你这块是可以输出成字符串的,也可以把它输出成整式整形的比,所以我这里把ID输出了整形,那把后面的这个把名字。都输出成了这个字符型,但是IG和成绩都输出了,都输出成了这个整数型,然后呢。把这个。后面这个因为平均成绩有小数小数点,这可能应该是瞎编的,呃,可能不一定是刚好这前三个相加的这个这个这个这个数这个刚好是这个它的这个平均成绩啊,就就知道就演示一下,我就可以写清楚这个俯角项,哎可以按照你的需求来做,哎区别啊,如果他后面做aw编程的时候。
10:06
你要把它写成,哪怕它是数字,你要把它写成字符串型string字符串写,那这个成这个数字是没有办法进行加减的。哎,字符串是没有办法做数学运算的,你只有把它升临成数值型或者是浮点型才能进行数学运算,OK,那如果你要不做数学运算,那你生成成字符串型和数值型就没有什么太大区别,那这里告诉你还是可以的啊,那我试试。那那ID号我就别变了,就还是。ID号码就还是字符串型对吧,那我们把这个程序就变成什么。这个整形对吧。然后呢,整形最后一个成绩呢,变成这个负角形,写清楚百分号8.2F对吧?啊。百分号8.2F,好,这个现在如果仅仅只是输出啊,没什么问题,就跟其他的这个差不多,但是啊,看到了吗。
11:02
我们这里是不是有列?对吧,那列呢,这是字符串,把它换成数值,系统认为这事根本就不应该存在。哎,那这个数值就变成了一个无法读取的数值,变成比如说那怎么处理这个问题,简单呀,把这行数排除掉不就完了吗。对吧,那也就说我先干嘛grape干嘛。V,然后呢,把内部只要包含有这个,随便找到关键字啊,只要有内部的就该把排除掉。然后在student里对吧,然后呢,再把它管道符交给他来,哎,管道符交过来我直接复制了,不需要再写文件名了,对吧,因为文件名已经在上一条命令写过了,然后管道符交过来了,对吧,这个时候直接处理。我看一下。其实这个东西这么麻烦,他干嘛需要再输出一遍对吧,不行还得加一下这个,我看一下我写错了。
12:07
嗯,我加一下文件名试试。啊,不行,那还真不能,它这个还真不能通过管道符直接调过来啊,普还真不支持这样,那这个就只能通过aw k来调用了,那现在没办法处理它,那我们就只能干嘛。只能是国外处理完交给aw k,由aw k再交给普啊只能是这样来处理的,OK,这两个直接处理是不行的,好,那知道一下就行吧,这个东西我们因为你可以看到我们后面W可以处理的时候,全部都需要什么普伦特来输出的。对吧,都是要通过它来输出的,所以我们需要先了解一下普这个东西的作用,OK,普和普啊,那普和普F的作用啊,我们这里说一下,后面我们会讲好行了,那普这种格式化输出呢,我们知道一下就行,OK。呃,我们后面会这个接多次来用它行了,那这节课呢,就这样,我们下节课再见。
我来说两句