免费注册 查看新帖 |

Chinaunix

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

初学者的疑问(sed命令),请各位大虾帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-20 19:55 |只看该作者 |倒序浏览
小弟想把当前用户的HOME目录路径存到一个变量中

然后想把“/”符号替换成"\/"打印出来,例如替换前 /home 替换后 \/home

不要问我的动机,我只是好奇的练习着



#!/bin/csh
a=`echo $HOME | sed 's/\//\\\//g'`
echo $a

这个居然执行不了
用sh +x 调试的时候,发现sed 's/\//\\\//g'少了一个\变成了sed 's/\//\\//g'

但是如果一个文件中直接写入/home/sqa的话,用上面脚本中的sed 's/\//\\\//g' 123.txt是可以用的。


于是我想到再加一个\\,谁知道居然可以了!

但是命令单独拿出来用sed 's/\//\\\\\//g' 123.txt就不行了,变成了\\/home\\/sqa


很纠结!!!


请高手解答!!

论坛徽章:
0
2 [报告]
发表于 2010-12-20 21:05 |只看该作者
回复 1# shenpl

    假设HOME=/root
    a=`echo $HOME | sed 's/\//\\\//g'`
    #a=\/root 没问题
    echo $a
    # echo \/root
    #/root  这里echo会把\/转义为/
   
   所以改为 echo '$a'
                #结果为:\/root 原样输出

论坛徽章:
0
3 [报告]
发表于 2010-12-20 21:23 |只看该作者
如果在使用echo时当输入的参数没有用双引号或者单引号括起来时,当前shell会解释其中对shell有效的转义字符然后再传给echo,如果用引号括起来则不会

论坛徽章:
0
4 [报告]
发表于 2010-12-20 23:07 |只看该作者
[root@ shell]# echo $HOME |sed  's/\//\\\//g'
\/root
[root@ shell]# echo $HOME |sed  's/\//\\\//'
\/root
[root@ shell]# a=`echo $HOME |sed  's/\//\\\//'`
sed:-e 表达式 #1,字符 9:unknown option to `s'
[root@ shell]# echo $HOME |sed  "s/\//\\\//"
sed:-e 表达式 #1,字符 9:unknown option to `s'

这个是为什么?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
5 [报告]
发表于 2010-12-21 03:55 |只看该作者
$ a=`echo $HOME |sed 's/\//\\\\\\//'`
$ echo $a
\/root

论坛徽章:
0
6 [报告]
发表于 2010-12-21 09:10 |只看该作者
a=$(echo $HOME | sed 's#/#\\/#g')

论坛徽章:
0
7 [报告]
发表于 2010-12-21 10:35 |只看该作者
echo $HOME|sed 's#/#\\/#g'

论坛徽章:
0
8 [报告]
发表于 2010-12-21 10:51 |只看该作者
[root@ shell]# echo $HOME |sed  's/\//\\\//g'
\/root
[root@ shell]# echo $HOME |sed  's/\//\\\//' ...
lusec3 发表于 2010-12-20 23:07



    我出现了和你一样额错误,


to 5楼 6楼  你们的命令执行不了

to 2楼  你的意思我貌似懂了一些


to 7楼,单行执行时可以达到效果的,但是放在脚本中赋值给变量时就不行了。。。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
9 [报告]
发表于 2010-12-21 10:55 |只看该作者
回复 8# shenpl


1、这个问题与 sed 无关,是 Shell 解析的问题,具体可参见:
http://bbs3.chinaunix.net/thread-686286-1-1.html
2、楼主用的是 csh

论坛徽章:
0
10 [报告]
发表于 2010-12-22 08:39 |只看该作者
回复 9# ly5066113


    非常感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP