免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Shell sed //?
最近访问板块 发新帖
查看: 1712 | 回复: 8
打印 上一主题 下一主题

sed //? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-21 15:11 |只看该作者 |倒序浏览
set aaa = "asdfg"
想把字符串中a替换成带路径的文件的文件名(/a/b.log),怎么换?如何转译 /
                                                                                                                                --csh

论坛徽章:
0
2 [报告]
发表于 2009-04-21 15:18 |只看该作者

回复 #1 UNIX_MJ 的帖子

[root@Greendays lianshou]# echo 'set aaa = "asdfg"' | awk -F" " '{gsub(/a/,"\/a\/b.log",$NF);print}'
set aaa = "/a/b.logsdfg"

[ 本帖最后由 greendays 于 2009-4-21 15:25 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-04-21 15:20 |只看该作者

  1. echo ${aaa/a/\/a\/b.log}
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-04-21 15:22 |只看该作者

  1. sed 's@a@/a/@'
复制代码


sed的分隔符可以是任意字符,避开它就可以了

论坛徽章:
0
5 [报告]
发表于 2009-04-21 15:28 |只看该作者
不太清楚LZ的意思,把你想要的结果贴出来吧

论坛徽章:
0
6 [报告]
发表于 2009-04-21 16:59 |只看该作者
set aaa = "asdfg"
只用sed替换
相把$aaa的"a"替换成/a/b
得到的结果是"asdfg"     =>     "/a/bsdfg"
另外,谢谢楼上各位,回去试下

论坛徽章:
0
7 [报告]
发表于 2009-04-21 17:21 |只看该作者

回复 #6 UNIX_MJ 的帖子

$ echo "asdfg"|sed 's@a@/a/b@'
/a/bsdfg

论坛徽章:
0
8 [报告]
发表于 2009-04-21 18:04 |只看该作者

回复 #6 UNIX_MJ 的帖子

echo ${aaa/a/\/a\/b/}
#转义一下就是 或者用sed用未出现的separator

论坛徽章:
0
9 [报告]
发表于 2009-04-21 19:05 |只看该作者

回复 #8 luyi1983 的帖子

方法可以实现,但是sed是在调用的包里,我没法改,有没有修改要替换的内容来改变,比如
set aaa = "asdfg"
set bbb = "\/a\/b"
echo "$aaa" | sed s/a/$bbb/g 通过修改bbb的付值方法来实现呢?

另外,8楼哥们,用反斜杠\转译/不好用,依然弹出错误,sed方法不正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP