/ / combina i termini simili in bash - bash, sorting, grep, uniq

combinare come termini in bash - bash, sorting, grep, uniq

Ho un elenco di nomi di dominio in un file di testo con un numero di volte in cui si verificano in una raccolta di file di posta elettronica. Per esempio:

 598 aol.com
1 aOL.COM
4 Aol.com
1 AOl.com
6 AOL.com
39 AOL.COM

C'erano 598 e-mail inviate a AOL.com e 1 inviati a aOL.COM e così via. Mi chiedevo se ci fosse un modo in bash per combinare aol.com e aOL.COM e tutti gli altri alias in quanto sono in effetti la stessa cosa. Qualsiasi aiuto sarebbe molto apprezzato!

Questa è la linea di codice che ha prodotto quell'output:

grep -E -o -r "b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}b" $ARCHIVE | sed "s/.*@//" | sort | uniq -c > temp2

risposte:

2 per risposta № 1

Aggiungere un -i (--ignore-case) flag al uniq comando nella tua one-liner:

grep -E -o -r "b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}b" $ARCHIVE 
| sed "s/.*@//" 
| sort 
| uniq -ic > temp2

Dal uniq pagina man:

-i
--ignore-case
Ignore differences in case when comparing lines.

0 per risposta № 2

Consiglierei di cambiare il programma che produce questo codice per rendere tutto in minuscolo, (Conversione di stringhe in minuscole nello scripting di shell Bash), quindi provare a ordinare.

Fare questo dopo il fatto renderebbe la vita più difficile.