免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ruoknow
打印 上一主题 下一主题

[文本处理] 怎么去掉换行的多余空格 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
11 [报告]
发表于 2013-11-28 10:52 |只看该作者
本帖最后由 这个冬天不冷 于 2013-11-28 10:54 编辑
  1. #!/bin/bash

  2. f()
  3. {
  4.     local i=$1
  5.     if [ $i -eq 1 ] || [ $i -eq 2 ]
  6.     then
  7.         echo $i;
  8.     else
  9.         ((i--))
  10.         sum1=$(f $i)
  11.         ((i--))
  12.         sum2=$(f $i)
  13.         ((sum=sum1 + sum2))
  14.         echo $sum

  15.     fi

  16. }
  17. n=$(cat filename)
  18. f $n
复制代码
回复 9# fire_001
  1. [root@everIover ~]# cat filename
  2. 10
  3. 不知道这个数列项数N很大的时候会出现什么结果,毕竟不像C语言,shell有很多约束,具体 请大神解释下。。。我也不怎么懂
复制代码
  1. [root@everIover ~]# ./f.sh > res
  2. [root@everIover ~]# cat res
  3. 89
复制代码

论坛徽章:
0
12 [报告]
发表于 2013-11-28 11:25 |只看该作者
回复 11# 这个冬天不冷
你的意思好像理解错了,不是输出累加和,是输出数列,比如从文件读入的N是4,输出的是0 1 1 2

   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
13 [报告]
发表于 2013-11-28 13:23 |只看该作者
  1. #!/bin/bash

  2. f()
  3. {
  4.     local i=$1
  5.     if [ $i -eq 1 ] || [ $i -eq 2 ]
  6.     then
  7.         echo $i;
  8.     else
  9.         ((i--))
  10.         sum1=$(f $i)
  11.         ((i--))
  12.         sum2=$(f $i)
  13.         ((sum=sum1 + sum2))
  14.         echo $sum
  15.     fi

  16. }
  17. n=$(cat filename)

  18. >resfile#清空resfile

  19. for((j=1;j<=$n;j++))
  20. do
  21.     res=$(f $j)
  22.     echo -n "$res " >>resfile
  23. done
复制代码
回复 12# fire_001


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
14 [报告]
发表于 2013-11-28 14:00 |只看该作者
  1. #!/bin/bash
  2. f()#定义求斐波那契数列的函数
  3. {
  4.     local i=$1 #$1是函数接受的第一个参数,以此类推 $2第二个。。。。
  5.     if [ $i -eq 1 ] || [ $i -eq 2 ] #判断是否传入的参数 是否等于1或者等于2,如果是直接就输出1
  6.     then
  7.         echo $i;
  8.     else
  9.         ((i--)) #i自减1,
  10.         sum1=$(f $i) #相当于  f(i-1)
  11.         ((i--)) #i再自减
  12.         sum2=$(f $i) #相当于f(i-2)
  13.         ((sum=sum1 + sum2)) #相当于sum = f(i-2)+f(i-1)
  14.         echo $sum #最后输出jieguo
  15.     fi

  16. }
  17. n=$(cat filename) # 从filenam中读取选项n,filename内容 10

  18. >resfile #做一个重定向,什么也没有重定向到文件resfile,目的清空这个文件,一面影响到最后的结果

  19. for((j=1;j<=$n;j++)) #循环1-n 每次把调用函数的结果输入到resfile
  20. do
  21.     res=$(f $j) #保存函数执行的结果到变量res
  22.     echo -n "$res " >>resfile #-n 选项表示不换行输出结果到resfile
  23. done
复制代码

论坛徽章:
0
15 [报告]
发表于 2013-11-28 17:12 |只看该作者
回复 2# rdcwayx


    谢谢。好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP