com sed
:
sed '$!N;/\(.*,\).*\n/!P;D' infile
N
significa que sempre há duas linhas consecutivas no espaço de padrão e sed
P
rim a primeira delas somente se o primeiro campo nessa linha não for o mesmo que o primeiro campo na segunda linha . Então D
remove a primeira linha do espaço padrão e reinicia o ciclo.
Outra maneira com gnu datamash
(supondo que seu arquivo esteja classificado como datamash
requer entrada classificada):
datamash -t ',' -g 1 last 2 <infile
Este g
grupos da entrada ,
delimitada pelo campo 1
st, imprimindo apenas o valor last
(da coluna 2
nd) de cada grupo.
Se o seu arquivo não estiver classificado, datamash
poderá classificá-lo via -s
:
datamash -t ',' -s -g 1 last 2 <infile
mas isso significa que a ordem inicial das linhas não será preservada. Então, isso pode não fazer o que você quer. Nesse caso, você poderia usar sed
/ awk
/ perl
etc ...