怎么通过shell脚本打印乘法口诀表呢,今天Linux学习的小编就这一问题给大家详细的解决一下。

问题背景:

生成9*9乘法表

[root@oldboy ~]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

1x1=1

1x2=2   2x2=4

1x3=3   2x3=6   3x3=9

1x4=4   2x4=8   3x4=12  4x4=16

1x5=5   2x5=10  3x5=15  4x5=20  5x5=25

1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36

1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49

1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64

1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81

问题分析解决

第一步: seq 9

[root@oldboy ~]# seq 9

1

2

3

4

5

6

7

8

9

小结 为何用seq呢?

`seq' prints the numbers from FIRST to LAST by INCREMENT.  By default, each number is printed on a separate line.

很容易发现seq生成的 数字每一个都是一行。

如果使用 echo {1..9} 则会在一行。无法把结果传到给sed处理。

第二步: sed ‘H;g’

[root@oldboy ~]# seq 9 | 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

小结:

wKiom1moDvWS22btAAqmEuPRZy0977.png

wKioL1moDuPSbL6OAAeVnzNk3uQ953.png

了解根据上图了解HGx用法即可。

第三步:

第一小步:

[root@oldboy scripts]# seq 9 | sed 'H;g' | awk -v RS='' '{print $1,$2,$3,$4,$5,$6,$7,$8,$9}'

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

小结:

1.-v 定义变量 这个变量可以在awk中使用

2.RS即 record separator

RS == “”

Records are separated by runs of blank lines. Leading and trailing newlines in a file are ignored.

每个记录(每行)被一个或多个空行分隔。文件中的换行都被忽略。

第二小步:

第一小小步

[root@oldboy scripts]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%d ",i)}'

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 [root@oldboy scripts]#

改为循环输出,可是却都在一行。

小结:

printf默认不会输出换行(与print有区别)

需要手动按照条件(每个字段(record)的最后一列))输出换行”\n”

第二小小步

[root@oldboy scripts]# seq 9 | sed 'H;g' | awk  '

BEGIN{ RS=""}

> {

> for(i=1;i<=NF;i++)

>   { if (i==NF)

> char="\n"

> else

> char="\t"

> printf("%d %s",i,char)

>  }

> }'

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

简写为

[root@oldboy scripts]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%d %s",i,i==NF?"\n":"\t")}'

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

小结:

1.exp?exp1:exp2   这是常用的条件运算符。也是最特殊的一个三目运算符。如果前面两句你不懂。记住一句话:if (condition) then-body  else else-body 一样的

2.判断是否是一个字段的最后一个数 i==NF 来判断。

3.如果是最后一个则换行

4.不是则输出\t

最后一步

第一小步

配出

1*1

1*2 2*2

…………

的形式

[root@oldboy scripts]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%d*%d %s",i,NR,i==NF?"\n":"\t")}'

1*1

1*2     2*2

1*3     2*3     3*3

1*4     2*4     3*4     4*4

1*5     2*5     3*5     4*5     5*5

1*6     2*6     3*6     4*6     5*6     6*6

1*7     2*7     3*7     4*7     5*7     6*7     7*7

1*8     2*8     3*8     4*8     5*8     6*8     7*8     8*8

1*9     2*9     3*9     4*9     5*9     6*9     7*9     8*9     9*9

最后一小步

计算结果

[root@oldboy scripts]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%d*%d=%d %s",i,NR,i*NR,i==NF?"\n":"\t")}'

1*1=1

1*2=2   2*2=4

1*3=3   2*3=6   3*3=9

1*4=4   2*4=8   3*4=12  4*4=16

1*5=5   2*5=10  3*5=15  4*5=20  5*5=25

1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36

1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49

1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64

1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

本文章版权归老男孩教育所有。转载请注明出处。有任何疑问可以随时给我们网站留言。

本文链接:http://www.oldboyedu.com/tuijian_wenzhang/index/id/75.html

linux+++乘法口诀_通过shell脚本打印乘法口诀表相关推荐

  1. linux shell脚本打印乘法口诀,Shell脚本:打印九九乘法表

    运行环境:Red Hat Enterprise Linux Server release 6.4 (Santiago) 今天用三种不同的方式实现了Shell脚本打印的九九乘法表,代码如下 方法1:使用 ...

  2. linux下编写sql脚本,在Linux系统中编写简易shell脚本,向PLSQL表中插入数据

    案例环境: SecureCRT.PLSQLDeveloper 登入现有的linux服务器以及数据库账号.要求linux系统支持sqlplus #1.在PLSQL中创建一个简单的表: create ta ...

  3. linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言

    shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码(执行c语言时没有gcc编译器会报错的哦!): 1 #!/bin/bash 2 if [ $# -eq 0 ] 3 ...

  4. 服务器状态监控php源码,服务器状态监控_监控Linux服务器网站状态的SHELL脚本

    摘要 腾兴网为您分享:监控Linux服务器网站状态的SHELL脚本,蜗牛集市,同花顺,探客宝,手柄助手等软件知识,以及日期倒计时插件,云南省教育资源公共,rui手机桌面,小屁孩桌面便签,合金装备崛起复 ...

  5. Linux 之旅 10:Shell 脚本

    Linux 之旅 10:Shell 脚本 (图片来自shell/bash脚本编程) Linux 上的 Shell 脚本可以看做是类似于Windows上的批处理程序(.bat)一样的东西,其本质就是将一 ...

  6. LINUX下的流量监控shell脚本

    这篇文章主要介绍了LINUX下的流量监控shell脚本,可以适用任何Linux版本,需要的朋友可以参考下 一.脚本源码 # vi /etc/rc.d/traffic_monitor.sh ------ ...

  7. Linux服务器监控cpu数据shell脚本

    Linux服务器监控cpu数据shell脚本 背景: 一种简易的监控进程的CPU.内存.线程数.句柄数的办法,使用shell脚本实现监控,Excel实现数据分析. #!/bin/bash#过滤出需要的 ...

  8. 使用 shell 脚本打印如下图形

    使用 shell 脚本打印如下图形: #!/bin/bash #打印第一组图片 #for(())为类 C 语言的语法格式,也可以使用 for i in:do ;done 的格式替换 #for((i=1 ...

  9. linux cc脚本,Linux运维知识之Linux简单处理CC攻击shell脚本

    本文主要向大家介绍了Linux运维知识之Linux简单处理CC攻击shell脚本,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 第一个脚本是通过查找日志中访问次数过多的ip,并 ...

最新文章

  1. Oracle学习之DATAGUARD(七) 使用Broker管理DG
  2. Hibernate学习之一对多关联
  3. hdu 4109 Instrction Arrangement 拓扑排序 关键路径
  4. go发布一个公开的自定义仓库包
  5. leetcode 190. 颠倒二进制位
  6. MySQL进阶(DDL与DML)
  7. 机器学习基础 | 有监督学习篇
  8. 【转载】文件上传命令rz和下载命令sz的安装
  9. java millis_Java Duration.getMillis方法代码示例
  10. 信号与系统 matlab综合实验 pdf,《信号与系统——MATLAB综合实验》 谷源涛-第三讲.pdf...
  11. 微管理——给你一个技术团队,你该怎么管
  12. wifi扫描流程图_一种wifi扫描阶段进行身份识别的认证方法
  13. Android设备刷Device-owner说明
  14. Elasticsearch:Hadoop 大数据集成 (Hadoop => Elasticsearch)
  15. NetSuite 使用库存盘点
  16. 做项目的一些心得体会
  17. pwn在matlab中怎么搭建,PWN题搭建
  18. 手把手的 git 降伏指南——阿龙咸鱼经
  19. echart 图表类型
  20. python爬取微博恶评_python爬取微博评论的实例讲解

热门文章

  1. ASCII码对照表:
  2. 人工智能刷题(个人向)
  3. STM32F427库函数PWM+DMA控制ws2812b灯带
  4. 小黑仿生轮腿机器人(三)-SLAM导航
  5. CSDN客服联系方式(有QQ联系方式)
  6. 曼谷旅游不可错过的游船体验:游览湄南河,赏两岸风光
  7. WMS LICENSE PLATE NUMBERS LPN CONTEXT
  8. 论软件开发过程RUP及其应用
  9. 生活小窍门:枸杞泡水喝应该注意的三件事
  10. 【ZZULIOJ】1008: 美元和人民币