Tente isto:
sed '/CLKA/,/TEST1A/ { s/PortId = \"A/& B/; }' file
Este comando sed adiciona o caractere B
ao final do padrão PortId = "A
, que está entre duas palavras CLKA
e TEST1A
.
Você também pode usar start ( ^
) e end ( $
) da linha para corresponder / substituir apenas PortId = "A"
dentro do módulo CLKA { ... }
. ^ CLKA {$
corresponde à linha que contém apenas
CLKA {
e ^ }$
corresponde à linha se apenas contiver
}
Entrada:
CLKA {
PortId = "A"
}
CLKA {
Direction = Input
Tag = Clock
PortId = "A"
}
Comando:
sed '/^ CLKA {$/,/^ }$/ { s/PortId = \"A/& B/; }' file
Saída:
CLKA {
PortId = "A"
}
CLKA {
Direction = Input
Tag = Clock
PortId = "A B"
}
Observe que os espaços após ^
, porque você tem um espaço antes de cada linha (no exemplo fornecido), se você não tiver esse espaço, remova-os.