免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1836 | 回复: 9
打印 上一主题 下一主题

[文本处理] 本人想做一个循环输出,求大神指教 [复制链接]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-04 17:55 |只看该作者 |倒序浏览
本人想做一个循环输出,达到以下效果:
用户可以任意输入a和b的值,
如果
a=7001
b=4

那么可以输出:
a1=7002
a2=7003
a3=7004
a4=7005

b1=server7002
b2=server7003
b3=server7004
b4=server7005
如果
a=9001
b=5
那么可以输出:
a1=9002
a2=9003
a3=9004
a4=9005
a5=9006

b1=server9002
b2=server9003
b3=server9004
b4=server9005
b4=server9006

最好bash和ksh都通用,求大神指教

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
2 [报告]
发表于 2015-01-04 18:08 |只看该作者
回复 1# Ajax0816
  1. awk -va=9001 -vb=5 'BEGIN{for(i=1;i<=b;i++){a++;j=j"a"i"="a"\n";g=g"b"i"=""server"a"\n"};print j"\n"g}'
复制代码

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
3 [报告]
发表于 2015-01-04 18:39 |只看该作者
本帖最后由 zxy877298415 于 2015-01-04 20:33 编辑
  1. [root@zxy shell]# sh file
  2. input two num a b:9001 5
  3. a1=9002
  4. a2=9003
  5. a3=9004
  6. a4=9005
  7. a5=9006
  8. b1=server9002
  9. b2=server9003
  10. b3=server9004
  11. b4=server9005
  12. b5=server9006
  13. [root@zxy shell]# cat file
  14. read -p "input two num a b:" a  b
  15. for ((i=1;i<=$b;i++));do
  16.   a=$((a+1))
  17.   arr[$i]=$a
  18.   echo a$i"="$a
  19. done;
  20. for ((i=1;i<=$b;i++));do
  21.   echo b$i"=server"${arr[$i]}
  22. done;
复制代码
回复 1# Ajax0816


   

论坛徽章:
7
申猴
日期:2014-12-21 13:57:24巳蛇
日期:2014-12-25 22:27:08申猴
日期:2015-01-19 08:07:36辰龙
日期:2015-02-04 11:40:06处女座
日期:2015-02-04 11:40:412015年亚洲杯之卡塔尔
日期:2015-03-06 12:01:322015年亚洲杯之乌兹别克斯坦
日期:2015-03-31 13:43:57
4 [报告]
发表于 2015-01-04 19:26 |只看该作者
  1. #!/usr/bin/awk -f

  2. BEGIN{
  3.         printf "input a:"
  4.         getline a <"-"
  5.         printf "input b:"
  6.         getline b <"-"
  7.         for(i=1;i<=b;i++){
  8.                 print "a" i "="(a+i)
  9.         }
  10.         for(i=1;i<=b;i++)
  11.         {
  12.                 print "b" i "=""server"(a+i)
  13.         }
  14. }
复制代码
getline a<"-"      “-”表示标准输入;是将标准输入重定向到变量a

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
5 [报告]
发表于 2015-01-05 15:42 |只看该作者
回复 2# Buring__

试过了,可以,谢谢了~


   

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
6 [报告]
发表于 2015-01-05 15:43 |只看该作者
回复 3# zxy877298415

在bash是可以的,在ksh中不行


   

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
7
发表于 2015-01-05 15:46
回复 4# goofool

bash和ksh都不行啊

   

求职 : Linux运维
论坛徽章:
4
狮子座
日期:2014-12-20 10:15:35天秤座
日期:2014-12-24 16:54:192015年亚洲杯之科威特
日期:2015-01-27 21:32:482015亚冠之平阳省
日期:2015-10-22 16:31:52
8 [报告]
发表于 2015-01-05 20:46 |只看该作者
  1. for (( i=1;i<=$2;i++ ))
  2. do
  3.       let a[$i]=$1+$i
  4.       b[$i]="server"${a[$i]}
  5.       echo a$i=${a[$i]}
  6. done

  7. echo

  8. for (( i=1;i<=$2;i++ ))
  9. do
  10.       echo b$i=${b[$i]}
  11. done

  12. exit $?
复制代码
然后执行./file   7001  4

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [报告]
发表于 2015-01-05 21:12 |只看该作者
$ a=7001;b=4; echo $a $b | awk '{for(n=1;n<=$2;n++){a=a"a"n"="$1+n"\n";b=b"b"n"=server"$1+n"\n"}printf a"\n"b}'
a1=7002
a2=7003
a3=7004
a4=7005

b1=server7002
b2=server7003
b3=server7004
b4=server7005

论坛徽章:
0
10 [报告]
发表于 2015-01-06 11:34 |只看该作者
不为别的,只为增加一种思路。

  1. #!/bin/bash
  2. read -p "a=" a
  3. read -p "b=" b
  4. echo $a $b|awk -vOFS="\n" '{a=$1;b=$2;for(i=0;i++<a;){$i="a"i"="b+i;$(i+a+1)="b"i"=server"b+i}}1'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP