Oto fragment z WEJŚCIA:
...
####################
Bala Bela;XXXXXX12345;XXXXXX12345678;A
SERVER345Z3.DOMAIN.com0
SERVER346Z3.DOMAIN.com0
SERVER347Z3.DOMAIN.com0
SERVER348Z3.DOMAIN.com0
ssh-dss ...pubkeyhere...
####################
Ize Jova;XXXXXX12345;XXXXXX12345;A
SERVER342Z3.DOMAIN.com0
SERVER343Z3.DOMAIN.com0
SERVER345Z3.DOMAIN.com0
ssh-rsa ...pubkeyhere...
...
A oto fragment kodu WYJŚCIA, którego potrzebuję:
Bala Bela;XXXXXX12345;XXXXXX12345678;A
4
Ize Jova;XXXXXX12345;XXXXXX12345;A
3
Potrzebuję WYJŚCIA z WEJŚCIA, aby zobaczyć, ile wierszy zaczynających się na „SERWER” trafia do danego użytkownika (np .: „Bala Bela; XXXXXX12345; XXXXXX12345678; A”). Jak mogę to zrobić w bash?
bash
text-processing
Gasko Peter
źródło
źródło
Odpowiedzi:
To samo w perlu one-liner
i grał w golfa
źródło
Ta wersja zlicza wszystkie wiersze, które nie pasują do wyrażenia regularnego w
grep
wierszu.Wynik:
Jeśli tylko chcesz liczyć linie rozpoczynające się od „server”, a następnie:
źródło
Wynik:
Jeśli liczba prefiksów jest w porządku:
Wynik:
źródło
awk
Alternatywa:Wszystko w jednej linii:
źródło
Więc jeśli dane wyjściowe są już posortowane w każdym „segmencie”, możesz bezpośrednio zastosować uniq, sprawdzając tylko pierwsze N znaków:
Oto N == 6, ponieważ SERVER składa się z 6 znaków od początku wiersza. Skończysz z tym wyjściem (które nieco różni się od wymaganego wyjścia):
źródło