Pode ser feito, e. com um único sed
, mas por uma questão de simplicidade eu usaria tac
:
tac file | sed '2s/;$/new-text-string;/' | tac
Eu tenho um arquivo no qual eu preciso fazer o eco do texto no final do arquivo a partir da linha de comando, o problema é que os dados estão em uma sub-rotina, todos dentro de chaves.
Este é o final do arquivo:
text-string1,text-string2,text-string3;
}
Eu preciso inserir texto após o texto string3, mas ainda mantê-lo dentro do ponto-e-vírgula e da chave. Assim:
text-string1,text-string2,text-string3,new-text-string;
}
Qual é a melhor maneira de conseguir isso a partir da linha de comando?
Pode ser feito, e. com um único sed
, mas por uma questão de simplicidade eu usaria tac
:
tac file | sed '2s/;$/new-text-string;/' | tac
sed -i 's/;$/,new-text-string;/' filename
Encontrará a última ocorrência do ";" e acrescente os novos dados antes. O -i torna uma alteração in-loco no arquivo a partir da linha de comando.