Eu tenho um arquivo de texto da seguinte maneira;
ALIC00AUS_R_20183350000.gz -4052052.7 4212835.9 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.7 4212836.0 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.7 4212836.0 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.7 4212835.9 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.5 4212836.0 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.6 4212835.9 -2545104.6
CPVG00CPV_R_20183460000.gz 5626883.4 -2380932.3 1824483.9
CPVG00CPV_R_20183460000.gz 5626883.4 -2380932.3 1824483.9
CPVG00CPV_R_20183460000.gz 5626883.3 -2380932.2 1824483.1
Neste arquivo, repita seis e três vezes, respectivamente ALIC00AUS_R_20183350000.gz
. CPVG00CPV_R_20183460000.gz
Preciso remover as últimas linhas repetidas de cada string da coluna 1 e a saída deve ser a seguinte;
ALIC00AUS_R_20183350000.gz -4052052.7 4212835.9 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.7 4212836.0 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.7 4212836.0 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.7 4212835.9 -2545104.6
ALIC00AUS_R_20183350000.gz -4052052.5 4212836.0 -2545104.6
CPVG00CPV_R_20183460000.gz 5626883.4 -2380932.3 1824483.9
CPVG00CPV_R_20183460000.gz 5626883.4 -2380932.3 1824483.9
Se você tiver certeza de que cada
$1
(primeira coluna) foi duplicada pelo menos uma vez, poderá:$1
já foram vistas antesEx.
Se você puder atender à garantia na resposta fornecida por @steeldriver, essa é a melhor solução, caso contrário, use este script.
Awk é um programa para fazer esse tipo de substituição.
Para remover linhas que tenham uma duplicata na primeira coluna, isso deve ser feito.
awk '!seen[$1]++' filename > outputfile
Se você precisar remover a duplicação completa de linhas, use isso.
awk '!seen[$0]++' filename > outputfile
Como visto nesta resposta: https://unix.stackexchange.com/questions/171091/remove-lines-based-on-duplicates-within-one-column-without-sort
Aqui está uma breve explicação. awk é usado para escaneamento de padrão e processamento de texto. Primeiro, ele verifica se o valor da coluna 1 ($1) está no mapa visualizado. Se não for, imprime a linha no arquivo de saída ou tela se você não redirecionar (> arquivo de saída). A próxima parte é que ele adiciona as informações da coluna visualizada a vistas (++) para que possa pesquisar com o próximo padrão.