Извлечение имени между двумя разделителями через awk

У меня есть строка как это

<user>@<server>:<port>:/foo/bar

и я хотел бы извлечь пользователя, сервер, порт и каталог.

Пользователь может легко быть извлечен

echo <string> | awk -F"@" '{print $1;}'

Но сервер находится в двух различных разделителях. Это возможное через awk?

6
задан 28 September 2016 в 01:27

3 ответа

Можно объединиться два cut команды для извлечения имени сервера:

echo <string> | cut -d":" -f1 | cut -d"@" -f2

Объяснение:

  • echo <string> | используют строку в качестве входа
  • cut -d":" -f1 | разделитель полей набора к : и извлекают зарегистрированный разделитель набора первого поля (<user>@<server>)
  • cut -d"@" -f2 к @ и извлеките secon поле (<server>)
9
ответ дан 23 November 2019 в 07:19

Да это возможно - использование регулярного выражения для разделителя

$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'@|:' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar

или

$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'[@:]' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
5
ответ дан 23 November 2019 в 07:19

Как насчет только,

grep -Eoi "[a-z/]{1,}"  <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar
2
ответ дан 23 November 2019 в 07:19

Другие вопросы по тегам:

Похожие вопросы: