Если я правильно понимаю, что вы хотите, это отфильтровать клиентов с подключениями, отличными от «фиолетового» (в вашем примере только «зеленый», но, возможно, и других цветов).
Следующие команды используют grep
чтобы удалить линии с «Фиолетовым», тр
сделать одну линию и сед
поставить разрывы строк перед «клиентом» и, наконец, grep
убрать оставшиеся строчки с 'подключением' и выбрать только нужную информацию для каждого клиента.
Весь информационный набор:
< myfile grep -v 'Фиолетовый' | тр '\n' ' '| тр -с ' ' ' | sed "s/ клиент/\nclient/g" \
| grep -v 'соединение'
Имя хоста и все, что указано позади:
< myfile grep -v 'Фиолетовый' | тр '\n' ' '| тр -с ' ' ' | sed "s/ клиент/\nclient/g" \
| grep -v 'соединение' | grep -o 'имя хоста: .*'
Только имя хоста, которое вы хотели, согласно тому, что я мог прочитать:
< myfile grep -v 'Фиолетовый' | тр '\n' ' '| тр -с ' ' ' | sed "s/ клиент/\nclient/g" \
| grep -v 'соединение' | grep -o 'имя хоста: [^ ]*'
Другая группа (которая должна быть отфильтрована) с именем хоста и подключением, отличным от «Фиолетового»:
< myfile grep -v 'Фиолетовый' | тр '\n' ' '| тр -с ' ' ' | sed "s/ клиент/\nclient/g" \
| grep 'соединение' | grep -o 'имя хоста: .*'