sed:在输出中使用搜索模式

时间:2009-11-24 19:08:12

标签: sed

我想在sed命令的输出部分使用搜索模式。例如,给定以下sed命令:

sed '/HOSTNAME=/cHOSTNAME=fred' /etc/sysconfig/network

我想用一些引用搜索词的转义序列替换“HOSTNAME =”的第二个实例。像这样:

# this doesn't actually work
sed '/HOSTNAME=/c\?=fred' /etc/sysconfig/network

有没有人知道是否有办法做到这一点,或者我必须在答案中重复搜索词。

我知道我可以这样做:

sed 's/\(HOSTNAME=\)/\1fred/' /etc/sysconfig/network

但这与我想要的略有不同 - 例如#HOSTNAME = zug将变成#HOSTNAME = fred,但我不想要领先的“#”。第一个sed示例处理这样的情况。

1 个答案:

答案 0 :(得分:2)

试试这些:

sed 's/.*\(HOSTNAME=\)/\1fred/' /etc/sysconfig/network

sed 's/.*\(HOSTNAME=\).*/\1fred/' /etc/sysconfig/network