Chinaunix

标题: 能否帮我编个脚本? [打印本页]

作者: 馨馨    时间: 2010-09-07 12:36
标题: 能否帮我编个脚本?
<aaaList>
<aaaRrp user="point001-point008">
  <aaa user="point001"/>
  <aaa user="point002"/>
  <aaa user="point003"/>
  <aaa user="point004"/>
  <aaa user="point005"/>
  <aaa user="point006"/>
  <aaa user="point007"/>
  <aaa user="point008"/>
</aaaRrp>
<aaaRrp user="point009-point016">
  <aaa user="point009"/>
  <aaa user="point010"/>
  <aaa user="point011"/>
  <aaa user="point012"/>
  <aaa user="point013"/>
  <aaa user="point014"/>
  <aaa user="point015"/>
  <aaa user="point016"/>
</aaaRrp>
<aaaRrp user="point017-point024">
  <aaa user="point017"/>
  <aaa user="point018"/>
  <aaa user="point019"/>
  <aaa user="point020"/>
  <aaa user="point021"/>
  <aaa user="point022"/>
  <aaa user="point023"/>
  <aaa user="point024"/>
</aaaRrp>
<aaaRrp user="point025-point032">
  <aaa user="point025"/>
  <aaa user="point026"/>
  <aaa user="point027"/>
  <aaa user="point028"/>
  <aaa user="point029"/>
  <aaa user="point030"/>
  <aaa user="point031"/>
  <aaa user="point032"/>
</aaaRrp>






<aaaRrp user="poin393-point400">
  <aaa user="point393"/>
  <aaa user="point394"/>
  <aaa user="point385"/>
  <aaa user="point396"/>
  <aaa user="point397"/>
  <aaa user="point398"/>
  <aaa user="point399"/>
  <aaa user="point400"/>
</aaaRrp>
</aaaList>

问题:8个一组,从小到大。
作者: ashlv    时间: 2010-09-07 12:49
LZ忘了留下邮箱
作者: ly5066113    时间: 2010-09-07 12:56
try:
  1. awk 'BEGIN{print "<aaaList>";for(i=1;i<=400;i+=8){printf "<aaaRrp user=\042point%03d-point%03d\042>\n",i,i+7;for(j=i;j<=i+7;j++)printf "\t<aaa user=\042point%03d\042/>\n",j;print "</aaaRrp>"}print "</aaaList>"}'
复制代码

作者: 馨馨    时间: 2010-09-07 14:39
try:
ly5066113 发表于 2010-09-07 12:56



    谢谢,可以!
作者: 馨馨    时间: 2010-09-07 15:01
如果,这段程序的文件名为aa,那么如果我执行./aa 1 400
取两个变量,程序如何修改呢?
作者: 好看的附件    时间: 2010-09-07 15:26
本帖最后由 好看的附件 于 2010-09-07 16:42 编辑

回复 5# 馨馨


  已经修改了


  1. #!/bin/bash
  2. if [[ $# -lt 2 ]];then
  3.         echo "Usage:./aa startnum endnum"
  4.         exit   
  5. fi
  6. echo "<aaaList>"
  7. for((i=$1;i<=$2;i++))
  8. do
  9.         staval=$(printf "%03d" $i)      
  10.         endval=$(($i+7))        
  11.         if [[ $endval -gt $2 ]];then
  12.                 endval=$(printf "%03d" $2)      
  13.         else   
  14.                 endval=$(printf "%03d" $(($i+7)))      
  15.         fi      
  16.         if [[ $flag -eq 0 ]];then
  17.                 echo "<aaaRrp user="point$staval-point$endval">"
  18.                 flag=1  
  19.         fi      
  20.         echo "<aaa user="point$staval"/>"
  21.         if [[ $(($i%8)) -eq 0 ]];then
  22.                 flag=0  
  23.                 echo "</aaaRrp>"
  24.         fi      
  25. done
  26. if [ $flag -eq 1 ];then
  27.         echo "</aaaRrp>"
  28. fi
  29. echo "</aaaList>"
复制代码

作者: 馨馨    时间: 2010-09-07 15:52
./aa 1 32
<aaaList>
./aaseg: line 12: [[: 008: value too great for base (error token is "008")
<aaaRrp user=point001-point008>
<aaa user=point001/>
./aaseg: line 12: [[: 009: value too great for base (error token is "009")
<aaa user=point002/>
<aaa user=point003/>
<aaa user=point004/>
<aaa user=point005/>
<aaa user=point006/>
<aaa user=point007/>
<aaa user=point008/>
</aaaRrp>
<aaaRrp user=point009-point016>
<aaa user=point009/>
<aaa user=point010/>
./aaseg: line 12: [[: 018: value too great for base (error token is "018")
<aaa user=point011/>
./aaseg: line 12: [[: 019: value too great for base (error token is "019")
<aaa user=point012/>
<aaa user=point013/>
<aaa user=point014/>
<aaa user=point015/>
<aaa user=point016/>
</aaaRrp>
<aaaRrp user=point017-point024>
<aaa user=point017/>
<aaa user=point018/>
<aaa user=point019/>
<aaa user=point020/>
./aaseg: line 12: [[: 028: value too great for base (error token is "028")
<aaa user=point021/>
./aaseg: line 12: [[: 029: value too great for base (error token is "029")
<aaa user=point022/>
<aaa user=point023/>
<aaa user=point024/>
</aaaRrp>
<aaaRrp user=point025-point032>
<aaa user=point025/>
<aaa user=point026/>
<aaa user=point027/>
<aaa user=point028/>
<aaa user=point029/>
<aaa user=point030/>
./aaseg: line 12: [[: 038: value too great for base (error token is "038")
<aaa user=point031/>
./aaseg: line 12: [[: 039: value too great for base (error token is "039")
<aaa user=point032/>
</aaaRrp>
</aaaList>

有点问题,帮我改改
作者: 馨馨    时间: 2010-09-07 15:54
附件,再帮我改改。谢谢
作者: 好看的附件    时间: 2010-09-07 16:08
回复 8# 馨馨


    已经修改了,我又编辑了下
作者: 馨馨    时间: 2010-09-07 16:28
回复 9# 好看的附件


   非常好用!!
作者: 好看的附件    时间: 2010-09-07 16:42
回复 8# 馨馨


    我又编辑了下,你用这个吧
作者: 馨馨    时间: 2010-09-07 16:51
附件,请您再帮我编个脚本,谢谢了。
./aa 001 020 hhh26 (取3个变量)

结果:

$AAA_BBB
user= tttcn001
ppp=YOU
  status=UUPP
MIN=1
ziyuan=hhh26

$AAA_BBB
user= tttcn002
ppp=YOU
  status=UUPP
MIN=1
ziyuan=hhh26

$AAA_BBB
user= tttcn003
ppp=YOU
  status=UUPP
MIN=1
ziyuan=hhh26

$AAA_BBB
user= tttcn004
ppp=YOU
  status=UUPP
MIN=1
ziyuan=hhh26






$AAA_BBB
user= tttcn020
ppp=YOU
  status=UUPP
MIN=1
ziyuan=hhh26
作者: 好看的附件    时间: 2010-09-07 17:01
回复 12# 馨馨


   和前面的不一样么。。。。。
  1. #!/bin/bash
  2. if [[ $# -lt 3 ]];then
  3.         echo "Usage:./aa startnum endnum string"
  4.         exit   
  5. fi

  6. for((i=$1;i<=$2;i++))
  7. do
  8.         echo '$AAA_BBB'
  9.         var=$(printf "%03d" "$i")
  10.         echo "user=tttch$var"
  11.         echo 'ppp=YOU'
  12.         echo 'status=UUPP'
  13.         echo 'MIN=1'
  14.         echo "ziyuan=$3"
  15.         echo   
  16. done
复制代码
BTW: 你说我这是在害你么
作者: 馨馨    时间: 2010-09-07 17:03
回复 13# 好看的附件


    让我怎么感谢你呢?
作者: 好看的附件    时间: 2010-09-07 17:07
回复 14# 馨馨


    有空吃个饭
作者: 馨馨    时间: 2010-09-07 17:33
回复 15# 好看的附件


    好啊!
作者: 馨馨    时间: 2010-09-07 17:41
O(∩_∩)O
作者: ashlv    时间: 2010-09-07 17:47
回复 15# 好看的附件


    难道...
难道是MM提问?
噢,又错过了
LZ早把MM的身份亮出来,该有多少热心人帮助你啊
作者: bbgg1983    时间: 2010-09-07 22:10
附件哥真牛




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2