linux+++乘法口诀_linux使用一行代码打印乘法口诀

root@ecs-beijing1:~# 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

对代码进行拆解:

root@ecs-beijing1:~# seq 9

1

2

3

4

5

6

7

8

9

seq打印出一个序列,作为管道的输入,进入sed进行处理:

5a2be5fb41bcc521df9c6171c75c5a7c.png

sed命令中:

pattern space相当于车间sed把流内容在这里处理。

hold space相当于仓库,加工的半成品在这里临时储存。

这里需要注意的是每行记录前都是有一个空行的。在excel表中把sed流程推演一下:(P代表pattern space;H代表hold space)

0260c1c1638491771964a5791539a246.png

可以看出,每行记录数=所在行数;由于经过了+H,带上了一个\n的符号,后面用RS将其换掉,否则显示出来的是60行而不是需要的9行。

至此原料数据有了,后面是用awk进行格式化输出:

for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")

内建变量

变量

描述

NF

一条记录的字段的数目

NR

已经读出的记录数,就是行号,从1开始

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值