sed替换一行

时间:2013-10-10 04:44:33

标签: bash sed

我正在尝试使用sed替换单行。

示例:

space_left_action = EMAIL
admin_space_left_action = SUSPEND

我试过这个命令:

sed -i '/space_left_action*/c\space_left_action = SYSLOG' /etc/audit/auditd.conf

结果:

space_left_action = SYSLOG
space_left_action = SYSLOG

我不想替换admin_space_left_action行,但仍然具有灵活性,如果有人用不同的sed更改space_left_action值仍然会替换该行。

3 个答案:

答案 0 :(得分:1)

使用'^'检查行的开头

sed -i '/^space_left_action*/c\space_left_action = SYSLOG' /etc/audit/auditd.conf

答案 1 :(得分:0)

你也可以尝试这个

sed -i '/[^_]space_left_action*/c\space_left_action = SYSLOG' /etc/audit/auditd.conf

答案 2 :(得分:0)

awk版本

awk '/^space_left_action/ {$3="SYSLOG"}1' /etc/audit/auditd.conf
space_left_action = SYSLOG
admin_space_left_action = SUSPEND