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.