Isto está intimamente relacionado com outra questão apenas neste caso a substituição tem de ser feita na primeira linha que corresponda clockBias
após o padrão. Se não houvesse nenhum caractere especial no seu fileB
, você poderia executar com gnu sed
:
sed -E 's|(.*)[[:blank:]](.*)|//,/clockBias/{/clockBias/{s/(:[[:blank:]]{1,})(.*)/\1/}}|' fileB | sed -Ef - fileA
Isso simplesmente transforma as linhas em seus comandos fileB
into sed
, por exemplo:
/CNR/,/clockBias/{/clockBias/{s/(:[[:blank:]]{1,})(.*)/-44163754.49/}}
e depois passa para o segundo sed
para processar fileA
.
Com entrada desconhecida, você teria que escapar de qualquer caractere especial no LHS / RHS como expliquei na minha resposta à outra pergunta (dessa vez usando BRE sintaxe):
sed 's|\(.*\)[[:blank:]]\{1,\}\(.*\)|\
|
h
s|.*\n||
s|[\&/]|\&|g
x
s|\n.*||
s|[[\.*^$/]|\&|g
G
s|\(.*\)\n\(.*\)|//,/clockBias/{/clockBias/{s/\(:[[:blank:]]\{1,\}\)\(.*\)/\1/}}|' fileB | sed -f - fileA