У меня есть строка как это
<user>@<server>:<port>:/foo/bar
и я хотел бы извлечь пользователя, сервер, порт и каталог.
Пользователь может легко быть извлечен
echo <string> | awk -F"@" '{print $1;}'
Но сервер находится в двух различных разделителях. Это возможное через awk
?
Можно объединиться два cut
команды для извлечения имени сервера:
echo <string> | cut -d":" -f1 | cut -d"@" -f2
Объяснение:
echo <string> |
используют строку в качестве входа cut -d":" -f1 |
разделитель полей набора к :
и извлекают зарегистрированный разделитель набора первого поля (<user>@<server>
) cut -d"@" -f2
к @
и извлеките secon поле (<server>
) Да это возможно - использование регулярного выражения для разделителя
$ 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
Как насчет grep только,
grep -Eoi "[a-z/]{1,}" <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar