免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed在命令行和在sh脚本里有区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-10-08 15:07 |只看该作者 |倒序浏览
我这里对配置要进行管理,因为其他事情多就暂时用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'       这样就能改成功的

论坛徽章:
0
2 [报告]
发表于 2018-10-08 16:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
3 [报告]
发表于 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
复制代码

论坛徽章:
0
4 [报告]
发表于 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查了下没查到)

论坛徽章:
0
5 [报告]
发表于 2018-10-16 10:37 |只看该作者
本帖最后由 c921967783 于 2018-10-16 10:42 编辑

111111111111111111

论坛徽章:
0
6 [报告]
发表于 2018-10-16 10:38 |只看该作者
本帖最后由 c921967783 于 2018-10-16 10:43 编辑

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

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
7 [报告]
发表于 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP