Chinaunix

标题: 求助,怎么添加字符?? [打印本页]

作者: vTNTVV    时间: 2012-11-01 23:19
标题: 求助,怎么添加字符??
read -p "please input the alias name : "  host
如果输入mysql-209 则$host=mysql-209
想把这mysql-209添加到hostgroups.cfg文件中,hostgroups.cfg内容如下:
define hostgroup{
         hostgroup_name          mysql-servers
         alias                   mysql Servers
         members                 mysql-157
         }
想达到的效果如下:
define hostgroup{
         hostgroup_name          mysql-servers
         alias                   mysql Servers
         members                 mysql-157,mysql-209
         }
当再次输入host新值时,比如mysql-211,则同样能添加到mysql-209的后面
求助怎么解决,麻烦大家帮帮忙,谢谢

作者: dn833    时间: 2012-11-01 23:29

  1. [root@cloud ~]# cat hostgroups.cfg
  2. define hostgroup{
  3.          hostgroup_name          mysql-servers
  4.          alias                   mysql Servers
  5.          members                 mysql-157
  6.          }
  7. [root@cloud ~]# host=mysql-209
  8. [root@cloud ~]# echo $host
  9. mysql-209
  10. [root@cloud ~]# sed '/members/ s/\(.*\)/&,'$host'/' hostgroups.cfg
  11. define hostgroup{
  12.          hostgroup_name          mysql-servers
  13.          alias                   mysql Servers
  14.          members                 mysql-157,mysql-209
  15.          }
复制代码

作者: wang_xue_m    时间: 2012-11-01 23:42
file:

  1. read -p "please input the aslias name:" host

  2. sed  -i "/members/{s/$/,$host/g}" hostgroup.cfg

复制代码

作者: vTNTVV    时间: 2012-11-01 23:45
谢谢大家,我明天试试
作者: vTNTVV    时间: 2012-11-01 23:56
回复 3# wang_xue_m
这种方法 是可以的;但是如果我想指定行,也就是在第5到第10进行替换 怎么写呢 谢谢


   
作者: yestreenstars    时间: 2012-11-02 00:21
回复 5# vTNTVV
  1. read -p "please input the aslias name:" host
  2. sed  -i "5,10{/members/s/$/,$host/}" hostgroup.cfg
复制代码

作者: vTNTVV    时间: 2012-11-02 00:25
谢谢大家 :wink:
作者: vTNTVV    时间: 2012-11-15 22:36
/members/s/$/  这几个能解释一下吗
{/members/s/$/,$host/}   /是分隔符是吗 我想试着把分隔符替换成# 好像不行
作者: yestreenstars    时间: 2012-11-15 23:03
回复 8# vTNTVV


    这样写你应该看得懂了吧?/members/{s/$/,$host/}
作者: zhaopingzi    时间: 2012-11-16 08:34
楼主相同的问题发过2遍了吧?
作者: vTNTVV    时间: 2012-11-23 22:25
回复 9# yestreenstars

谢谢


   
作者: licong_jay    时间: 2012-11-27 16:05
#!/usr/bin/perl

print "please input the alias name, one name per line:\n";
while(<STDIN>){
        chomp;
        push @hosts, $_;
}

print "\n";
while(<DATA>){
        chomp;
        $line=$_;
        for $host(@hosts){
                $line =~ s/$/, $host/ if $line=~/members/;
        }
        print "$line\n";
}

__DATA__
define hostgroup{
         hostgroup_name          mysql-servers
         alias                   mysql Servers
         members                 mysql-157
         }

$ ./2012.pl
please input the alias name, one name per line:
mysql-158
mysql-159
mysql-160

define hostgroup{
         hostgroup_name          mysql-servers
         alias                   mysql Servers
         members                 mysql-157, mysql-158, mysql-159, mysql-160
         }

顺便说一下,copy楼主的原文本要当心, 需要dos2unix转换一下格式




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