/ / łączyć takie terminy w bash - bash, sortowanie, grep, uniq

połącz terminy jak w bashu - bash, sorting, grep, uniq

Mam listę nazw domen w pliku tekstowym, które występują wielokrotnie w zbiorze plików e-mail. Na przykład:

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

Wysłano 598 e-maili do aol.com i 1 wysłane do aOL.COM i tak dalej. Zastanawiałem się, czy w bashu istnieje sposób na połączenie aol.com i aOL.COM i wszystkich innych aliasów, ponieważ są one w rzeczywistości tym samym. Każda pomoc byłaby bardzo mile widziana!

To jest linia kodu, która wyprodukowała to wyjście:

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

Odpowiedzi:

2 dla odpowiedzi № 1

Dodać -i (--ignore-case) flaga do uniq polecenie w jednym wierszu:

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

Od uniq strona man:

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

0 dla odpowiedzi nr 2

Polecam zmienić program tworzący ten kod, aby najpierw uczynić wszystko małymi literami (Konwertowanie łańcucha znaków na małe litery w skryptach powłoki Bash), a następnie spróbuj sortować.

Robienie tego po fakcie tylko utrudniłoby ci życie.