我想在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示例处理这样的情况。
答案 0 :(得分:2)
试试这些:
sed 's/.*\(HOSTNAME=\)/\1fred/' /etc/sysconfig/network
或
sed 's/.*\(HOSTNAME=\).*/\1fred/' /etc/sysconfig/network