1 votes

Comment extraire une partie de la ligne et l'ajouter à la fin de la ligne dans VIM avec regex ?

J'ai un fichier avec un certain nombre d'url dans le formulaire :

http://www.edu-factory.org/wp/about/

Je voudrais extraire le sitehost de l'url et l'ajouter à la fin de la ligne :

http://www.edu-factory.org/wp/about/ www.edu-factory.org

Une idée de comment faire ça ?

2voto

Damian Powell Points 315

Une façon de le faire :

:s:\(.*//\)\([^/]*\)\(/.*\):\1\2\3 \2:

Explication :

  • :s: - Utilisation de la substitution
  • \(.*//\) - Capturer la partie jusqu'à la double barre oblique (groupe 1)
  • \([^/]*\) - Capturez tout ce qui n'est pas un slash (groupe 2)
  • \(/.*\) - Capture la première barre oblique simple et tout ce qui la suit (groupe 3)
  • :\1\2\3 \2: - Sortir les groupes 1, 2 et 3 suivis d'un espace et du groupe 2 à nouveau.

Editar:

Vous pourriez le trier :

:s:\(.*//\)\([^/]*\)\(/.*\):& \2:

L'esperluette produit la chaîne entière qui inclut la ligne entière puisque la regex commence et se termine par .* . Vous pouvez utiliser \0 au lieu de l'esperluette.

0 votes

Et y a-t-il un groupe de sortie qui contient la ligne entière dans laquelle il y a eu une correspondance ?

0 votes

@sumek : Veuillez voir ma réponse éditée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X