Chinaunix

标题: sed在命令行和在sh脚本里有区别 [打印本页]

作者: c921967783    时间: 2018-10-08 15:07
标题: sed在命令行和在sh脚本里有区别
我这里对配置要进行管理,因为其他事情多就暂时用shell脚本去控制某几个环境的配置。
这里主要修改的配置是   zas.url=http\://127.0.0.1\:8081/zsa
sed替换因为有转义符所以在命令行要这样写sed -i 's#zas.url=http\\://127.0.0.1\\:8081/zsa#zas.url=http\\://127.0.0.1\\:9305/zsa#' env.properties
但是我在shell脚本里打算把zas.url=http\://127.0.0.1\:8081/zsa 替换成zas.url=http\\://127.0.0.1\\:8081/zsa时发现怎么着都不行,我是获取zas.url=http\://127.0.0.1\:8081/zsa字段把它存入test1,然后设置test11=`echo $test1|sed "s#\\#\\\\#g"`。这样怎么执行都是报错的。


同样的在命令行echo 'zas.url=http\://127.0.0.1\:8081/zsa' |sed 's/\\/\\\\/g'       这样就能改成功的

作者: 本友会机友会摄友会    时间: 2018-10-08 16:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: wh7211    时间: 2018-10-10 11:43
回复 1# c921967783


  1. cat 1
  2. zas.url=http\://127.0.0.1\:8081/zsa

  3. cat 1.sh
  4. #!/bin/bash

  5. sed -i 's#zas.url=http\\://127.0.0.1\\:8081/zsa#zas.url=http\\\\://127.0.0.1\\\\:9305/zsa#' 1

  6. ./1.sh

  7. cat 1
  8. zas.url=http\\://127.0.0.1\\:9305/zsa
复制代码

作者: c921967783    时间: 2018-10-16 10:36
回复 3# wh7211
感谢各位回复
sed -i 's#zas.url=http\\://127.0.0.1\\:8081/zsa#zas.url=http\\\\://127.0.0.1\\\\:9305/zsa#' 1



这样是可以,但是我把sed替换的内容转换成变量形式就怎么也行不通

例如  
echo 'zas.url=http\://127.0.0.1\:8081/zsa' |sed 's/\\/\\\\/g' 这样写的结果是:
zas.url=http\\://127.0.0.1\\:8081/zsa(想要的结果)
但是
zas.url=http\://127.0.0.1\:8081/zsa存入变量 zsa1后,在shell脚本里用
test11=`echo $test1|sed "s#\\#\\\\#g"`
echo $test11
这种方式替换不成功(不知道是不是转义的问题,整个变量转义么,perl里有但shell查了下没查到)

作者: c921967783    时间: 2018-10-16 10:37
本帖最后由 c921967783 于 2018-10-16 10:42 编辑

111111111111111111
作者: c921967783    时间: 2018-10-16 10:38
本帖最后由 c921967783 于 2018-10-16 10:43 编辑

回复的时候报数据库问题导致重新发了几遍~~~~23333333

作者: wh7211    时间: 2018-10-16 16:24
回复 4# c921967783


  1. test1='zas.url=http\://127.0.0.1\:8081/zsa'

  2. test11=`echo $test1|sed 's#\\\#\\\\\\\\\\\#g'`

  3. echo $test1
  4. zas.url=http\://127.0.0.1\:8081/zsa

  5. echo $test11
  6. zas.url=http\\://127.0.0.1\\:8081/zsa

  7. cat 1.sh
  8. #!/bin/bash
  9. test1='zas.url=http\://127.0.0.1\:8081/zsa'
  10. test11=`echo $test1|sed 's#\\\#\\\\\\\#g'`
  11. echo $test1
  12. echo $test11

  13. ./1.sh
  14. zas.url=http\://127.0.0.1\:8081/zsa
  15. zas.url=http\\://127.0.0.1\\:8081/zsa
复制代码





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