Extraindo nome entre dois delimitadores via awk

5

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 ?

    
por Markus 27.09.2016 / 21:56

3 respostas

7

Você pode combinar dois comandos cut para isso:

echo <string> | cut -d":" -f1 | cut -d"@" -f2
    
por Wayne_Yux 27.09.2016 / 22:00
4

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
    
por steeldriver 27.09.2016 / 22:19
2

Que tal grep apenas,

grep -Eoi "[a-z/]{1,}"  <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar
    
por αғsнιη 27.09.2016 / 22:41

Tags