remove o número de linhas duplicadas com base na correspondência antes da primeira vírgula

0

Tenho um texto grande no servidor Linux Centos 7 e gostaria de remover as linhas que correspondem antes da primeira vírgula

Input:

112112112,00,00,00
110110,01,01,02
112112112,11,11,888
110110,99,88,8
410410,22,22,22

Output:

410410,22,22,22
    
por αԋɱҽԃ αмєяιcαη 26.11.2017 / 01:03

2 respostas

1

Aqui estão algumas soluções awk de duas passagens. O primeiro passo armazena a frequência do campo 1 em um array x . O segundo passo imprime uma linha se x informa a frequência do campo 1 como 1

awk -F, 'first_pass{x[$1]++; next}; x[$1] == 1' first_pass=1 file first_pass=0 file

awk -F, 'BEGIN{while ((getline<ARGV[1]) > 0)x[$1]++}; x[$1] == 1' file
    
por 26.11.2017 / 01:27
0

Combinação GNU curta datamash + sed :

datamash -sft',' -g1 count 1 <file | sed -n 's/,1$//p'

O primeiro processo do pipeline acima contará o número de itens em cada grupo dos primeiros valores de campo (agrupados por -g1 ) adicionando contagens resultantes como o último campo

    
por 26.11.2017 / 12:24