Chinaunix

标题: 求助一个文本处理。。 [打印本页]

作者: ayays    时间: 2014-08-06 16:31
标题: 求助一个文本处理。。
本帖最后由 ayays 于 2014-08-07 09:12 编辑
  1. <Membership className="org.apache.catalina.tribes.membership.McastService"
  2.                 address="192.168.1.1"
  3.                 port="45564"
  4.                 frequency="500"
  5.                 dropTime="3000"/>
  6.         <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  7.                 address="191.168.1.10"
  8.                 port="5000"
  9.                 selectorTimeout="100"
  10.                         maxThreads="6"/>
复制代码
现在想写个脚本。内容是执行脚本时输入一个IP 比如192.168.1.100 然后这个IP去替换掉1.10 ,下次我再执行这脚本的时候输入别的IP,会去替换1.100

也就是说执行脚本时 输入的IP去替换上一次输入在1.10位置的IP。。求一个思路。。。
作者: dn833    时间: 2014-08-06 16:41
本帖最后由 dn833 于 2014-08-06 16:43 编辑
  1. [root@FILE_SHARE tmp]# sh t.sh /tmp/a 192.168.3.3
  2. <Membership className="org.apache.catalina.tribes.membership.McastService"
  3.                 address="192.168.1.1"
  4.                 port="45564"
  5.                 frequency="500"
  6.                 dropTime="3000"/>
  7.         <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  8.                 address="192.168.3.3"
  9.                 port="5000"
  10.                 selectorTimeout="100"
  11.                         maxThreads="6"/>
  12. [root@FILE_SHARE tmp]# cat /tmp/a
  13. <Membership className="org.apache.catalina.tribes.membership.McastService"
  14.                 address="192.168.1.1"
  15.                 port="45564"
  16.                 frequency="500"
  17.                 dropTime="3000"/>
  18.         <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  19.                 address="191.168.1.10"
  20.                 port="5000"
  21.                 selectorTimeout="100"
  22.                         maxThreads="6"/>
  23. [root@FILE_SHARE tmp]# cat t.sh
  24. #!/bin/bash
  25. sed  '/transport.nio.NioReceiver/{n;s/".*"/"'"$2"'"/}' $1
复制代码
如果能达到你的要求,sed后边加个-i就可以了
作者: ayays    时间: 2014-08-06 16:59
dn833 发表于 2014-08-06 16:41
如果能达到你的要求,sed后边加个-i就可以了

感谢大神 如此迅速。。。
作者: q1208c    时间: 2014-08-06 17:20
楼主到底是要替换IP, 还是要替换特定位置的IP, 这可是两件不同的事.

如果替换特定位置的IP, 那楼上的办法就OK. 如果要 替换IP, 那好象还得增加一个临时文件, 以记录上次你输入的IP. 否则, 从何改起呢?

有个笨办法, 就是 把这个 上次的IP, 写在 脚本本身里. 然后,在替换 你的文件的时候, 同时把脚本里的IP也换掉.


作者: zxy877298415    时间: 2014-08-06 23:02
回复 1# ayays
#!/bin/bash
t=$2
awk -F\" -v RS=">" -vt=$2  '$2~"Receiver" { $4=t;}1' $1
执行方法跟1楼一样

   
作者: ayays    时间: 2014-08-07 09:14
q1208c 发表于 2014-08-06 17:20
楼主到底是要替换IP, 还是要替换特定位置的IP, 这可是两件不同的事.

如果替换特定位置的IP, 那楼上的办 ...


。。没表达清楚  已经改过来了

作者: jcdiy0601    时间: 2014-08-07 16:06
#!/bin/bash

echo -n "Enter your old IP:"
read old_ip
echo "old_ip=$old_ip"

echo -n "Enter your new IP:"
read new_ip
echo "new_ip=$new_ip"

sed -i 's/'$old_ip'/'$new_ip'/' test




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