linux+++乘法口诀_通过shell脚本打印乘法口诀表
怎么通过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脚本打印乘法口诀表相关推荐
- linux shell脚本打印乘法口诀,Shell脚本:打印九九乘法表
运行环境:Red Hat Enterprise Linux Server release 6.4 (Santiago) 今天用三种不同的方式实现了Shell脚本打印的九九乘法表,代码如下 方法1:使用 ...
- linux下编写sql脚本,在Linux系统中编写简易shell脚本,向PLSQL表中插入数据
案例环境: SecureCRT.PLSQLDeveloper 登入现有的linux服务器以及数据库账号.要求linux系统支持sqlplus #1.在PLSQL中创建一个简单的表: create ta ...
- linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言
shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码(执行c语言时没有gcc编译器会报错的哦!): 1 #!/bin/bash 2 if [ $# -eq 0 ] 3 ...
- 服务器状态监控php源码,服务器状态监控_监控Linux服务器网站状态的SHELL脚本
摘要 腾兴网为您分享:监控Linux服务器网站状态的SHELL脚本,蜗牛集市,同花顺,探客宝,手柄助手等软件知识,以及日期倒计时插件,云南省教育资源公共,rui手机桌面,小屁孩桌面便签,合金装备崛起复 ...
- Linux 之旅 10:Shell 脚本
Linux 之旅 10:Shell 脚本 (图片来自shell/bash脚本编程) Linux 上的 Shell 脚本可以看做是类似于Windows上的批处理程序(.bat)一样的东西,其本质就是将一 ...
- LINUX下的流量监控shell脚本
这篇文章主要介绍了LINUX下的流量监控shell脚本,可以适用任何Linux版本,需要的朋友可以参考下 一.脚本源码 # vi /etc/rc.d/traffic_monitor.sh ------ ...
- Linux服务器监控cpu数据shell脚本
Linux服务器监控cpu数据shell脚本 背景: 一种简易的监控进程的CPU.内存.线程数.句柄数的办法,使用shell脚本实现监控,Excel实现数据分析. #!/bin/bash#过滤出需要的 ...
- 使用 shell 脚本打印如下图形
使用 shell 脚本打印如下图形: #!/bin/bash #打印第一组图片 #for(())为类 C 语言的语法格式,也可以使用 for i in:do ;done 的格式替换 #for((i=1 ...
- linux cc脚本,Linux运维知识之Linux简单处理CC攻击shell脚本
本文主要向大家介绍了Linux运维知识之Linux简单处理CC攻击shell脚本,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 第一个脚本是通过查找日志中访问次数过多的ip,并 ...
最新文章
- Oracle学习之DATAGUARD(七) 使用Broker管理DG
- Hibernate学习之一对多关联
- hdu 4109 Instrction Arrangement 拓扑排序 关键路径
- go发布一个公开的自定义仓库包
- leetcode 190. 颠倒二进制位
- MySQL进阶(DDL与DML)
- 机器学习基础 | 有监督学习篇
- 【转载】文件上传命令rz和下载命令sz的安装
- java millis_Java Duration.getMillis方法代码示例
- 信号与系统 matlab综合实验 pdf,《信号与系统——MATLAB综合实验》 谷源涛-第三讲.pdf...
- 微管理——给你一个技术团队,你该怎么管
- wifi扫描流程图_一种wifi扫描阶段进行身份识别的认证方法
- Android设备刷Device-owner说明
- Elasticsearch:Hadoop 大数据集成 (Hadoop => Elasticsearch)
- NetSuite 使用库存盘点
- 做项目的一些心得体会
- pwn在matlab中怎么搭建,PWN题搭建
- 手把手的 git 降伏指南——阿龙咸鱼经
- echart 图表类型
- python爬取微博恶评_python爬取微博评论的实例讲解