Como grep palavras-chave com valor exclusivo? [fechadas]

-1

Eu só quero dados que tenham valor único, digamos que gravamos arquivo de log para usuários de dispositivos móveis

<mobile_number1>|20141006 06:15:26||AKQY6LYACZAA4O|12|3|BIHAR|
<mobile_number2>|20141006 06:16:05||AKQY6MAYAEQALE|12|22|UP EAST|
<mobile_number3>|20141006 06:16:39||AKQY6MQICY4BEQ|12|2|ASSAM|
<mobile_number4>|20141006 06:16:49||AKQY6LUIAE4ACI|12|1|ANDHRA PRADESH| 
<mobile_number1>|20141006 06:17:53||AKQY6NFAAEYAJS|12|23|UP WEST| 
<mobile_number6>|20141006 06:18:09||AKQY6M7ACY4ANG|12|18|ORISSA|
<mobile_number7>|20141006 06:18:54||AKQY6MWQCZAAME|12|20|RAJASTHAN|
<mobile_number1>|20141006 06:19:50||AKQY6N2ACZMA2K|12|1|ANDHRA PRADESH|

Agora, precisamos buscar um número de celular exclusivo como este.

<mobile_number1>
<mobile_number2>
<mobile_number3>
<mobile_number4>
<mobile_number6>
<mobile_number7>
    
por Jayesh Dongare 06.10.2014 / 12:48

3 respostas

2

Tente isto:

  sort -t '|' -k 1,1 -u yourFile | awk -F "|" '{print $1}' 

onde:

  • -t '|' use | como separador
  • -k 1,1 usa a primeira coluna como chave
  • -u obtém uma linha exclusiva usando a chave

awk imprime a primeira coluna e o resultado é:

<mobile_number1>
<mobile_number2>
<mobile_number3>
<mobile_number4>
<mobile_number6>
<mobile_number7>

Este script funciona se cada linha em yourFile tiver mobile_number como primeira coluna separada do restante por | .

    
por Lety 06.10.2014 / 13:45
2

Para jogar fora todas as colunas, exceto a primeira:

cut -d '|' -f 1

Para omitir linhas recorrentes:

sort -u

Juntos (com entrada de um arquivo):

cut -d '|' -f 1 <FILE> | sort -u

Isso usa os utilitários de shell mais simples para executar a tarefa. Nenhum interpretador de comandos como awk necessário.

    
por David Foerster 06.10.2014 / 18:52
1
 awk '!x[$1]++ {print $1}' FS="|" /path/to/file 

exemplo:

[aneesh@mylap /]$  awk '!x[$1]++ {print $1}' FS="|" /tmp/test.txt 

<mobile_number1>
<mobile_number2>
<mobile_number3>
<mobile_number4>
<mobile_number6>
<mobile_number7>
    
por aneeshep 06.10.2014 / 13:55