Você pode combinar dois comandos cut
para isso:
echo <string> | cut -d":" -f1 | cut -d"@" -f2
Eu tenho uma string como essa
<user>@<server>:<port>:/foo/bar
e gostaria de extrair o usuário, servidor, porta e diretório.
O usuário pode ser facilmente extraído por
echo <string> | awk -F"@" '{print ;}'
Mas o servidor está dentro de dois diferentes delímetros. Isso é possível via awk
?
Você pode combinar dois comandos cut
para isso:
echo <string> | cut -d":" -f1 | cut -d"@" -f2
Sim, é possível - usando uma expressão regular para o delimitador
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'@|:' '{print ; print ; print ;print ;}'
<user>
<server>
<port>
/foo/bar
ou
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'[@:]' '{print ; print ; print ;print ;}'
<user>
<server>
<port>
/foo/bar
Que tal grep apenas,
grep -Eoi "[a-z/]{1,}" <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar