码迷,mamicode.com
首页 > 其他好文 > 详细

sed打印九九乘法表

时间:2015-04-22 11:51:01      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

<span style="font-size:18px;">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")}'</span>

预备知识:

seq:产生一个序列

sed:模式空间和存储空间

H:pattern space中的内容appendhold space\n

g:将存储空间的数据覆盖模式空间

 
输出的时候使用的模式空间,存储空间只是一个暂存器

1、seq产生1,然后加到sed模式空间,H将模式空间的值追加到存储空间,此时模式空间为1,存储空间为\n1,然后复制到模式空间,这时候模式空间为\n1,最后输出,将\n1传递到awk

awk -v RS=‘‘

{

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

        printf("%dx%d=%d%s",i,NR,i*NR,i==NR?‘\n‘:‘\t‘);

     }

}

注:RS=‘‘表示以空行作为分割符

2、seq产生2,然后加到模式空间,此时模式空间为2,存储空间为\n1;H将2追加到存储空间,此时存储空间为\n1\n2;

之后g将\n1\n2复制到模式空间,这时候模式空间为\n1\n2,输出到awk,此时awk处理的是\n1\n2

3、重复上述过程,知道打印完九九乘法表

虽然一句话就实现了九九乘法表,但是相比较高级语言还是有点难啊!

sed打印九九乘法表

标签:

原文地址:http://blog.csdn.net/havedream_one/article/details/45190407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!