193 votes

Extraire une partie d'une chaîne en utilisant bash/cut/split

Je ai une chaîne comme celui-ci:

/var/cpanel/users/joebloggs:DNS9=domain.example

Je besoin d'extraire le nom d'utilisateur (joebloggs) de cette chaîne et de le stocker dans une variable.

Le format de la chaîne sera toujours la même à l'exception de joebloggs et domain.example donc je pense que la chaîne peut être divisée en deux en utilisant cut?

La première division diviserait par : et nous stockerions la première partie dans une variable à passer à la seconde fonction de division.

La deuxième division diviserait par / et stockerait le dernier mot (joebloggs) dans une variable

Je sais comment faire cela en PHP en utilisant des tableaux et des divisions mais je suis un peu perdu en bash.

3voto

Al Ro Points 91

J'aime enchaîner les commandes awk en utilisant différents délimiteurs définis avec l'argument -F. D'abord, divisez la chaîne sur /users/ puis sur :

txt="/var/cpanel/users/joebloggs:DNS9=domain.com"
echo $txt | awk -F"/users/" '{print$2}' | awk -F: '{print $1}'

$2 donne le texte après le délimiteur, $1 le texte avant.

2voto

Je sais que je suis un peu en retard à la fête et il y a déjà de bonnes réponses, mais voici ma méthode pour faire quelque chose comme ça.

DIR="/var/cpanel/users/joebloggs:DNS9=domain.example"
echo ${DIR} | rev | cut -d'/' -f 1 | rev | cut -d':' -f1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X