Как вырезать строку между двумя шаблонами поиска (включая шаблоны поиска) из файла? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть файл с именем applications.txt, который содержит следующие данные:

MOB-x01gmobdb2a-PRD-IBG
TDST-AB-x01gtdsdb1a-UAT-CST
ABC-x01gabcdb2a-PRD-CBG
PQR-x01gpqrdb1a-UAT-IBG
XYZA-GZ-x01gxyzdb2a-PRD-TS
UVW-x01guvwdb1a-UAT-IBG

Строки в этом файле содержат имена хостов, которые я хотел бы отобразить следующим образом:

x01gmobdb2a
x01gtdsdb1a
x01gabcdb2a
x01gpqrdb1a
x01gxyzdb2a
x01guvwdb1a

Немногие из вышеперечисленных серверов являются UAT, и лишь немногие являются PROD-серверами. Как видите, имена хостов зажаты между двумя шаблонами:

  1. Первый шаблон -x (только нижний регистр x),
  2. Второй шаблон: -UAT или -PRD. Независимо от строки, доступной между первым шаблоном и вторым шаблоном, нам нужно отобразить.

примечание: Начиная с первого паттерна x также должно отображаться на выходе Пример имени хоста: x01gmobdb2a

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Это может быть вашим решением.Но без шаблона х.Я выбрал только PRD и UAT.

cat applications.txt | grep -e PRD -e UAT |awk -F"-" '{print $(NF-2)}'
0 голосов
/ 25 апреля 2018

Один, использующий awk:

$ awk 'match($0,/-x[^-]*/){print substr($0,RSTART+1,RLENGTH-1)}' file
x01gmobdb2a
x01gtdsdb1a
x01gabcdb2a
x01gpqrdb1a
x01gxyzdb2a
x01guvwdb1a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...