Chinaunix

标题: 问一个sed脚本 [打印本页]

作者: 1226ehziy    时间: 2010-05-21 11:16
标题: 问一个sed脚本
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
这句是什么意思
主要是那个@不明白
作者: linfengfeiye    时间: 2010-05-21 11:19
@就是分界符号,和你常用的/是一个意思

sed在用s命令的时候,分界符可以是任何字符。

甚至用数字都可以。。

sed -i 's4\./fixinc\.sh4-c true4' gcc/Makefile.in


我也是初学shell.
希望我没有讲错!
作者: XQKA    时间: 2010-05-21 11:25
对,你讲的没错。
作者: 1226ehziy    时间: 2010-05-21 12:27
谢谢LS两位 3q 我明白了
那句话就是把文件中 ./fixinc.sh 题换成 -c true
作者: expert1    时间: 2010-05-21 12:58
呵呵,这样用有目的的哈哈哈哈。
作者: 1226ehziy    时间: 2010-05-21 13:51
回复 5# expert1


    愿听详解 3q
作者: expert1    时间: 2010-05-21 13:58
本帖最后由 expert1 于 2010-05-21 14:00 编辑

回复 6# 1226ehziy


     比如:
echo "http://www.test.com/xkds.php?id=123"|sed 's/http://xxx./www/'

你会发现sed后http://这里的2个斜杠。此时/被当做分隔符处理(此时效果是把http:替换为空,但后面又有xxx./www/',你运行后会报错,所以把分隔符换成别的,比如#,%目的就在于此。免得引起误会。

此时的效果是echo "http://www.test.com/xkds.php?id=123"|sed 's#http://xxx.#www/'

就是把http://换成了www




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