Para substituir vírgulas por ponto e vírgula nas últimas n linhas com ed :
n=3
ed -s input <<< '$-'$((n-1))$',$s/,/;/g\nwq'
Dividindo isso:
-
ed -s= executado silenciosamente (não relate os bytes escritos no final) -
'$-'= do final do arquivo ($) menos ... -
$((n-1))= n-1 linhas ... - (
$' ... '= cite o resto do comando para protegê-lo do shell) -
,$s/,/;/g= ... até o final do arquivo (,$), pesquise e substitua todas as vírgulas por ponto e vírgula. -
\nwq= finaliza o comando anterior, depois salva e sai
Para substituir vírgulas por ponto e vírgula nas últimas n linhas com sed :
n=3
sed -i "$(( $(wc -l < input) - n + 1)),\$s/,/;/g" input
Quebrando isso:
-
-i= edite o arquivo "no local" -
$(( ... ))= faz um pouco de matemática: -
$( wc -l < input)= obter o número de linhas no arquivo -
-n + 1= voltar para trás n-1 linhas -
,\$= de n-1 linhas até o final do arquivo: -
s/,/;/g= substitua as vírgulas por ponto e vírgula.