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