忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 604 | 回复: 6

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

论坛徽章:
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
发表于 2018-10-08 16:35 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2018-10-08 16:48 编辑
  1. $你的找替 =
  2. @{
  3. 输入文件全路径     = '/你的文件路径'
  4. 输入文件编码      = 65001
  5. 输出文件全路径     = ''
  6.         
  7. 找什么 =
  8. @'
  9. zas.url=http://127.0.0.1:8081/zsa
  10. '@
  11.         
  12. 替换成啥 =
  13. @'
  14. zas.url=http://127.0.0.1:9305/zsa
  15. '@
  16.         
  17. 查找模式 = '行'
  18. 找不到则在文件末尾追加 = $false
  19. 查找返回的结果必须唯一 = $true
  20. 返回结果不唯一时 = '全部替换'
  21. }


  22. & /powershell/ps找算替简易版v2.05.ps1  @你的找替
复制代码

#本例子 先把【ps找算替简易版v1.22.ps1】保存在【/powershell/】中。本例子需要先运行【/usr/bin/pwsh】进入linux版powershell。


脚本下载地址:
https://pan.baidu.com/s/1yuqUOhY9lEw65vJ-vceg4w

2 我开发这个替换脚本,为了替换标准化,参数化。简化配置文件的处理。
3 我认为此简易版足够80%用了。免费使用。
4 根据需求,后续会开发正则版。或许收费。
5 支持下列os。系统需求:
5.1 win7 + powershell 5.1
5.2 win10 + powershell 5.1
5.3 linux + powershell 6.0,6.1

6 问题反馈:
powershell交流群
QQ群号=183173532

本人编写的脚本的 特色:
可以有,不成对的单双引号,
可以内嵌变量 如 $aaa
不用转义,这点比sed好很多

我辛苦写脚本,专门为解你 上述 困扰。


论坛徽章:
19
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:33黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:0915-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59CU十四周年纪念徽章
日期:2018-05-15 11:36:3815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:42
发表于 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
发表于 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
发表于 2018-10-16 10:37 |显示全部楼层
本帖最后由 c921967783 于 2018-10-16 10:42 编辑

111111111111111111

论坛徽章:
0
发表于 2018-10-16 10:38 |显示全部楼层
本帖最后由 c921967783 于 2018-10-16 10:43 编辑

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

论坛徽章:
19
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:33黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:0915-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59CU十四周年纪念徽章
日期:2018-05-15 11:36:3815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:42
发表于 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号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP