老男孩教育每日一题-第126天-通过shell脚本打印乘法口诀表
老男孩教育每日一题-第126天-通过shell脚本打印乘法口诀表 问题背景:生成9*9乘法表[root@oldboy~]#seq9|sed'H;g'|awk-vRS='''{for(i=1;i<=NF;i++)printf("%dx%d=%d%s",i,NR,i*NR,i==NR?"n":"t")}' 1x1=1 1x2=22x2=4 1x3=32x3=63x3=9 1x4=42x4=83x4=124x4=16 1x5=52x5=103x5=154x5=205x5=25 1x6=62x6=123x6=184x6=245x6=306x6=36 1x7=72x7=143x7=214x7=285x7=356x7=427x7=49 1x8=82x8=163x8=244x8=325x8=406x8=487x8=568x8=64 1x9=92x9=183x9=274x9=365x9=456x9=547x9=638x9=729x9=81 问题分析解决第一步: seq 9[root@oldboy~]#seq9 1 2 3 4 5 6 7 8 9 小结 为何用seq呢?`seq'printsthenumbersfromFIRSTtoLASTbyINCREMENT.Bydefault,eachnumberisprintedonaseparateline. 很容易发现seq生成的 数字每一个都是一行。 第二步: sed ‘H;g’[root@oldboy~]#seq9|sed'H;g' 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 小结:了解根据上图了解HGx用法即可。 第三步:第一小步:[root@oldboyscripts]#seq9|sed'H;g'|awk-vRS='''{print$1,$2,$3,$4,$5,$6,$7,$8,$9}' 1 12 123 1234 12345 123456 1234567 12345678 123456789 小结: 第二小步:第一小小步[root@oldboyscripts]#seq9|sed'H;g'|awk-vRS='''{for(i=1;i<=NF;i++)printf("%d",i)}' 112123123412345123456123456712345678123456789[root@oldboyscripts]# 改为循环输出,可是却都在一行。 小结:
第二小小步[root@oldboyscripts]#seq9|sed'H;g'|awk' BEGIN{RS=""} >{ >for(i=1;i<=NF;i++) >{if(i==NF) >char="n" >else >char="t" >printf("%d%s",char) >} >}' 1 12 123 1234 12345 123456 1234567 12345678 123456789 简写为 [root@oldboyscripts]#seq9|sed'H;g'|awk-vRS='''{for(i=1;i<=NF;i++)printf("%d%s",i==NF?"n":"t")}' 1 12 123 1234 12345 123456 1234567 12345678 123456789 小结:1.exp?exp1:exp2 这是常用的条件运算符。也是最特殊的一个三目运算符。如果前面两句你不懂。记住一句话:if (condition) then-body else else-body 一样的 最后一步第一小步配出 1*1 1*22*2 ………… 的形式 [root@oldboyscripts]#seq9|sed'H;g'|awk-vRS='''{for(i=1;i<=NF;i++)printf("%d*%d%s",i==NF?"n":"t")}' 1*1 1*22*2 1*32*33*3 1*42*43*44*4 1*52*53*54*55*5 1*62*63*64*65*66*6 1*72*73*74*75*76*77*7 1*82*83*84*85*86*87*88*8 1*92*93*94*95*96*97*98*99*9 最后一小步计算结果 [root@oldboyscripts]#seq9|sed'H;g'|awk-vRS='''{for(i=1;i<=NF;i++)printf("%d*%d=%d%s",i==NF?"n":"t")}' 1*1=1 1*2=22*2=4 1*3=32*3=63*3=9 1*4=42*4=83*4=124*4=16 1*5=52*5=103*5=154*5=205*5=25 1*6=62*6=123*6=184*6=245*6=306*6=36 1*7=72*7=143*7=214*7=285*7=356*7=427*7=49 1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64 1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81 小结:
备注今天是每日一题陪伴大家的第126天,期待你的进步。 对于题目和答案的任何疑问,请在博客评论区留言。 http://www.52php.cn/article/p-dxklwfhw-bcy.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |