Вот фрагмент из ВВОДА:
...
####################
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...
...
И вот фрагмент из ВЫХОДА, который мне нужен:
Bala Bela;XXXXXX12345;XXXXXX12345678;A
4
Ize Jova;XXXXXX12345;XXXXXX12345;A
3
Поэтому мне нужен выход из INPUT, чтобы я мог видеть, сколько строк, начинающихся с «SERVER», идет данному пользователю (например: «Bala Bela; XXXXXX12345; XXXXXX12345678; A»). Как я могу сделать это в Bash?
bash
text-processing
Гаско Питер
источник
источник
Ответы:
То же самое в Perl One-Liner
и гольф
источник
Эта версия подсчитывает все строки, которые не соответствуют регулярному выражению в
grep
строке.Вывод:
Если вы только хотите считать строки , начинающиеся с «сервером», то:
источник
Вывод:
Если с префиксом количество в порядке:
Вывод:
источник
awk
Альтернатива:Все в одной строке:
источник
Так что, если выходные данные уже отсортированы в каждом «ведре», вы можете напрямую применить uniq с проверкой только первых N символов:
Здесь N == 6, поскольку SERVER состоит из 6 символов в начале строки. В итоге вы получите этот вывод (который немного отличается от вашего требуемого вывода):
источник