Chinaunix

标题: sed中替换模式的一点疑问 [打印本页]

作者: zxr1018    时间: 2005-08-18 11:19
标题: sed中替换模式的一点疑问
linux 下试验
#  name=pig
# echo "tom is a pig" | sed 's/$name/cat/'
tom is a pig

#
结果没达到预期目的,将pig替换为cat

请问在替换模式中该怎么使用变量?
作者: waker    时间: 2005-08-18 11:26
标题: sed中替换模式的一点疑问
http://bbs.chinaunix.net/forum/viewtopic.php?p=1511745#1511745
作者: 我爱安静    时间: 2005-08-18 11:27
标题: sed中替换模式的一点疑问
# name=pig
# echo "tom is pig" |sed 's/$pwd/cat/'

$pwd。。。。和name的关系是??
作者: 700724    时间: 2005-08-18 11:32
标题: sed中替换模式的一点疑问
应该是:
echo "tom is pig" |sed 's/'$name'/cat/'
作者: zxr1018    时间: 2005-08-18 11:34
标题: sed中替换模式的一点疑问
原帖由 "我爱安静" 发表:
# name=pig
# echo "tom is pig" |sed 's/$pwd/cat/'

$pwd。。。。和name的关系是??


写错了,现以更正,谢谢!
作者: 我爱安静    时间: 2005-08-18 12:03
标题: sed中替换模式的一点疑问
sed 's/$name/cat/'

netman 先生在其13问中有详细解释用'和"的不同时机,在此您或许温习一下
作者: zxr1018    时间: 2005-08-18 12:14
标题: sed中替换模式的一点疑问
linux 下试验
#  name=pig
# echo "tom is a pig" | sed 's/$name/cat/'
tom is a pig

这个可以用''解决
#  name=pig
# echo "tom is a pig" | sed 's/'$name'/cat/'
tom is a cat

可如果变量是这样的呢
# name="/usr/local/etc"
# echo $name
/usr/local/etc
# echo "tom is /usr/local/etc" | sed 's/'$name'/cat/'
sed: -e expression #1, char 8: Unknown option to 's'
#
作者: angleeye    时间: 2005-08-18 12:50
标题: sed中替换模式的一点疑问
echo "tom is /usr/local/etc"|sed sname:cat:g
作者: zxr1018    时间: 2005-08-18 13:03
标题: sed中替换模式的一点疑问
[quote]原帖由 "angleeye"]echo "tom is /usr/local/etc"|sed sname:cat:g[/quote 发表:


赞!能顺便解解惑么?
作者: 寂寞烈火    时间: 2005-08-18 13:51
标题: sed中替换模式的一点疑问
原帖由 "zxr1018" 发表:


赞!能顺便解解惑么?

因为原变量中存在于sed定界符一样的符号(都是/),因此,为避免混肴,sed提供了多种的定界符,这里用的是冒号,当然用别的亦可! 如:
sed s@patten@string@

作者: viton_xuan    时间: 2005-08-18 14:05
标题: sed中替换模式的一点疑问
真是长见识拉,想问一下怎么能查到sed的所有定界符。怎么我man不到
作者: viton_xuan    时间: 2005-08-18 14:18
标题: sed中替换模式的一点疑问
试了一下,这样也行,不过就比angleeye的麻烦多了。
echo "tom is /usr/local/etc" | sed 's/'$(echo $name | sed 's/\//\\\//g')'/cat/'
作者: zxr1018    时间: 2005-08-18 15:39
标题: sed中替换模式的一点疑问
原帖由 "我爱安静" 发表:
sed 's/$name/cat/'

netman 先生在其13问中有详细解释用'和"的不同时机,在此您或许温习一下


谢谢!
这里$被转义了!
作者: zxr1018    时间: 2005-08-18 15:43
标题: sed中替换模式的一点疑问
原帖由 "viton_xuan" 发表:
试了一下,这样也行,不过就比angleeye的麻烦多了。
echo "tom is /usr/local/etc" | sed 's/'$(echo $name | sed 's/\//\\\//g')'/cat/'


如果这个路径是作为命令参数输入的呢?sed 's/\//\\\//g')'这里处理起来不是要麻烦死了?
作者: viton_xuan    时间: 2005-08-18 17:39
标题: sed中替换模式的一点疑问
是啊,我也觉得太麻烦不过作为命令参数传入也一样啊。因为都是/




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