J'ai une ficelle comme ça
<user>@<server>:<port>:/foo/bar
et je voudrais extraire l'utilisateur, le serveur, le port et le répertoire.
L'utilisateur peut facilement être extrait par
echo <string> | awk -F"@" '{print $1;}'
Mais le serveur se situe dans deux délimètres différents. Est-ce possible via awk
?
Vous pouvez combiner deux commandes cut
pour extraire le nom du serveur:
echo <string> | cut -d":" -f1 | cut -d"@" -f2
Explication:
echo <string> |
utilise la chaîne comme entréecut -d":" -f1 |
définissez le délimiteur de champ sur :
et extrayez le premier champ (<user>@<server>
)cut -d"@" -f2
définit le délimiteur classé sur @
et extrait le champ seconde (<server>
)Oui c'est possible - en utilisant une expression régulière pour le délimiteur
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'@|:' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
ou
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'[@:]' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
Que diriez-vous de grep seulement,
grep -Eoi "[a-z/]{1,}" <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar