使用linux中的sed匹配两行中的文本

时间:2014-11-17 17:57:50

标签: regex linux unix sed

我的模式如下

#error value for eg1
$text=1

我想将上面的模式替换为

#error value for eg1
$text=0

如何在linux中使用sed实现这一目的?

3 个答案:

答案 0 :(得分:0)

我会做什么:

sed '/#error value for eg1/{h;n;s/$text=1/$text=0/}' file

如果你有像你的评论那样的用户输入似乎说:

input=$1 # first argument of the script

# double quotes mandatory here for the variable `$input` to be evaluated :
sed "/#error value for $input/{h;n;s/\$text=1/\$text=0/}" file

答案 1 :(得分:0)

这样的事情:

sed -n '/^#error value for eg1$/{p;n;s/^\(\$text=\)1$/\10/};p' file

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed -r 'N;s/^(#error value for eg1\n\$text=)0$/\11/;P;D' file

读取两行,只有两行匹配时才更改第二行。