+ -
当前位置:首页 → 问答吧 → 如何在一行中写sed [已解决][shell中单双引号的区别]

如何在一行中写sed [已解决][shell中单双引号的区别]

时间:2011-07-26

来源:互联网

本帖最后由 husher 于 2011-07-26 13:59 编辑

文件内容:
ip "1.1.1.1"
mac "00-11-11-11-22-11"
domain "google.com"
dns1 "202.106.0.20"
dns2 "8.8.8.8"

把 mac 这一行的 值("00-11-11-11-22-11") 替换成 ifconfig eth0 | sed -e 's/:/-/g' -n -e '/.*HWaddr \([:[:xdigit:]\-]*\)/{s//\1/;p}' 的输出
怎样在一行中来写呢??

作者: husher   发布时间: 2011-07-26

我用
mac=`ifconfig eth0 | sed -e 's/:/-/g' -n -e '/.*HWaddr \([:[:xdigit:]\-]*\)/{s//\1/;p}'`;
sed -e 's/mac.*/mac \"$mac\"/'

不行啊

作者: husher   发布时间: 2011-07-26

我语文水平这么差了?
没明白什么意思

作者: wsxedcer   发布时间: 2011-07-26

本帖最后由 husher 于 2011-07-26 13:40 编辑


QUOTE:
我语文水平这么差了?
没明白什么意思
wsxedcer 发表于 2011-07-26 13:35




就是 把 mac 这一行 替换成 mac "xx-xx-xx-xx-xx-xx" xx是 ifconfig eth0 ... 那个命令的输出
怎样把他们写在一行中

比如: ifconfig eth0 | sed -e 's/:/-/g' -n -e '/.*HWaddr \([:[:xdigit:]\-]*\)/{s//\1/;p}' 输出 8a-90-7e-ce-21-4c

把 mac 哪一行 替换成 mac = "8a-90-7e-ce-21-4c"
怎样在一行中写呢?

作者: husher   发布时间: 2011-07-26

回复 husher


sed "s/mac.*/mac \"$mac\"/"

作者: ly5066113   发布时间: 2011-07-26

回复 ly5066113


    谢谢
    为啥双引号 可以呢?

作者: husher   发布时间: 2011-07-26

回复 husher


echo "$mac"
echo '$mac'
看看结果

更多了解,请看十三问:
http://bbs.chinaunix.net/viewthr ... p;page=4#pid1511745

作者: ly5066113   发布时间: 2011-07-26

* hard quote:' ' (單引號),凡在 hard quote 中的所有 meta 均被關閉。
* soft quote: " " (雙引號),在 soft quoe 中大部份 meta 都會被關閉,但某些則保留(如 $ )

多谢 ly5066113 (Tim)

作者: husher   发布时间: 2011-07-26