Como salvar somente as linhas contendo conteúdo redundante usando o awk? [duplicado]

0

Eu sei como remover as linhas que contêm informações redundantes em uma coluna específica, mas não como salvar SOMENTE o redundante

Por exemplo:

Eu tenho o seguinte texto (kk.txt) com 3 colunas:

A 3 qs   
A 8 qs  
A 6 st  
B 3 qs  
A 5 qs  
C 9 st  
D 2 st  
C 3 st  

Se eu me inscrever,

awk '{if(! a[$1]){print; a[$1]++}}' kk.txt > kk2.txt

Isso me dá:

A 3 qs  
B 3 qs  
C 9 st  
D 2 st

Em vez disso, quero o oposto:

A 3 qs  
A 8 qs  
A 6 st  
A 5 qs  
C 9 st  
C 3 st  

Alguma ideia ???

Muito obrigado

    
por Jllacer 31.10.2017 / 18:52

1 resposta

1

Se eu entendi corretamente que você deseja excluir linhas que têm primeira coluna única (como referência porque não há este D 2 st linha na sua saída mais sort -u -k2,3 infile é o que você precisa), então você pode fazer o seguinte e processar o arquivo de entrada duas vezes para imprimir as linhas onde a coluna # 1 foi repetida mais de uma vez:

awk 'NR==FNR{seen[$1]++; next} seen[$1]>1' infile infile
A 3 qs
A 8 qs
A 6 st
A 5 qs
C 9 st
C 3 st
    
por 31.10.2017 / 19:33

Tags