как grep текст до следующего пространства?

7/04/27 10:50:17 INFO Master: Driver submitted org.apache.spark.deploy.worker.DriverWrapper 17/04/27 10:50:17 INFO Master: Launching driver driver-20170427105017-0000 on worker worker-20170427103840-192.168.5.242-7078 17/04/27 10:50:22 INFO Master: 192.168.5.5:53156 got disassociated, removing it. 17/04/27 10:50:22 INFO Master: 192.168.5.5:37668 got disassociated, removing it. 17/04/27 10:50:22 INFO Master: 192.168.5.5:53154 got disassociated, removing it. 17/04/27 10:55:27 INFO Master: Registering app ETL DataPipeline App 17/04/27 10:55:27 INFO Master: Registered app ETL DataPipeline App with ID app-20170427105527-0000 17/04/27 10:55:27 INFO Master: Launching executor app-20170427105527-0000/0 on worker worker-20170427103842-192.168.5.175-7078 17/04/27 10:55:27 INFO Master: Launching executor app-20170427105527-0000/1 on worker worker-20170427103838-192.168.5.37-7078 17/04/27 11:08:25 INFO Master: Asked to kill driver driver-20170427105017-0000 17/04/27 11:08:25 INFO Master: Kill request for driver-20170427105017-0000 submitted 17/04/27 11:08:26 INFO Master: Received unregister request from application app-20170427105527-0000 

Как я получу драйвер-20170427105017-0000 и соответствующий 192.168.5.242 и аналогично, как grep app-20170427105527-0000 / 0 и его соответствующий 192.168.5.175.

One Solution collect form web for “как grep текст до следующего пространства?”

Использование sed для получения всех сообщений driver и executor связанных с «Запуск»:

 $ sed -n -E 's/^.*Launching (driver|executor) ([^ ]*).*worker-[0-9]*-([^-]*).*$/\2 \3/p' file.in driver-20170427105017-0000 192.168.5.242 app-20170427105527-0000/0 192.168.5.175 app-20170427105527-0000/1 192.168.5.37 
  • [^ ]* будет соответствовать любому количеству символов, кроме пробела.
  • \2 и \3 – обратные ссылки на то, что соответствовало второй и третьей круглым скобкам соответственно. Вторые круглые скобки содержат [^ ]* и будут соответствовать тексту после Launching driver или Launching executor , а в третьих круглых скобках содержится [^-]* и будет соответствовать IP-адресу (до - который завершает адрес).
  • ^ и $ в s/^...$/.../p фиксирует регулярное выражение в начале и конце строки, а p сообщает sed «распечатать» результат замены, если он сделан.

В качестве альтернативы и, возможно, более надежной из-за менее регулярного выражения магии, используя awk :

 $ awk '/Launching/ { split($NF, a, "-"); print $7, a[3] }' file.in 
  • Posix Character Устанавливает разницу между ] и ]?
  • Получение ошибки RE: операнд-оператор повторения недействителен в osx sed
  • Разделить файл журнала по временному диапазону
  • Поиск файла для числа, которое находится между двумя конкретными номерами
  • Что происходит для последней строки при использовании команды N с sed
  • совпадение шаблонов и захват в unix
  • В чем смысл использования нескольких восклицательных знаков в sed?
  • Заменить все вхождения символа, кроме первого
  • Использование tee для добавления строки в файл, а также использовать ее в качестве замены шаблона в другом файле
  • простой стол поворота скрипта
  • sed работает при вводе из эха, но не из файла
  • Interesting Posts

    Как узнать общую память между двумя процессами?

    Google Chrome на OpenBSD

    Операторы перенаправления всегда открывают дескрипторы файлов параллельно?

    Запустите мой веб-сервер с помощью диспетчера

    Каковы значения префикса интерфейса в ifconfig?

    что означает «^ $ 1» в сценарии оболочки?

    Конфигурация управления подсветкой неверно работает на Ideapad.

    терминал: неанглийские символы

    Отдельный файл bashrc для сеансов ssh, чтобы избежать ошибок Unison

    vim редактирование / переключение между несколькими файлами эффективно в больших структурах каталогов

    Переупорядочить несколько линейных блоков с помощью Sed

    Обработка URL-адресов GNU URL-адресами с UTF-8 – где это документировано?

    Подсчитайте количество вхождений значения столбца в TSV-файл с AWK

    Приложение, которое позволяет отображать содержимое буфера обмена и его тип MIME?

    Как отказаться от stderr в ограниченной оболочке Bash?

    Linux и Unix - лучшая ОС в мире.