使用sed替换字符串

时间:2015-03-27 06:48:58

标签: linux sed

我想使用ip_ttl="1"将字符ip_ttl="2"替换为sed

我已尝试过sed -i "s/ip_ttl="1"/ip_ttl="2"/g" - 但它无效。

请帮忙!

3 个答案:

答案 0 :(得分:2)

将您的sed代码放在单引号中,因为您的代码已包含双引号。

sed -i 's/ip_ttl="1"/ip_ttl="2"/g' file

如果您将代码放在两个双引号内,那么一旦达到另一个双引号,sed将终止该程序。在"到达1之前,它会被视为结束并终止该程序。

<强>更新

如果数字总是在变化,那么定义匹配任何数字的模式会更好。

sed -i 's/ip_ttl="[0-9]\+"/ip_ttl="2"/g' file

答案 1 :(得分:1)

如果您在模式中使用引号,请在模式中转义双引号:

sed -i "s/ip_ttl=\"1\"/ip_ttl=\"2\"/g"

或用单引号括起整个模式:

sed -i 's/ip_ttl="1"/ip_ttl="2"/g'

答案 2 :(得分:0)

或者你可以转义引号

sed -i "s/ip_ttl=\"1\"/ip_ttl=\"2\"/g" file

有时候这很有用,因为你在选择的字符串中都有单引号和双引号。