Em sed
, você pode usar um intervalo (parar na linha vazia no final da categoria [shovel]
):
sed '/\[shovel\]/,/^$/ s/enabled = 0/enabled = 1/' file
a primeira parte /\[shovel\]/,/^$/
significa encontrar uma linha com [shovel]
, continue até encontrar uma linha vazia e faça o (s) seguinte (s) comando (s) (neste caso, um simples s/old/new
) apenas nessa parte de file
Nota em resposta ao comentário: Até onde eu sei, sed
não aceitará delimitadores alternativos em intervalos e endereços (portanto, escape de /
caracteres que devem ser literais, se você precisar combiná-los), mas você ainda pode usar um em qualquer um dos seguintes comandos, por exemplo:
sed '/\[shovel\]/,/^$/ s|enabled = 0|enabled = 1|' file