Bonjour,
encore une question avec sed. Je cherche à extraire, dans un fichier, toutes les chaines de caractère commençant par une lettre de lecteur (C, D, E, c, d...) et terminant les lignes :
Exemple du fichier :
1 2 3 4 5 6 7
| fichier:vbs 10ko script C:\windows\script vbs.vbs
Dossier:répertoire 400Mo ; f:\Dossier
chaine de caractères quelconque
texte sans intérêt
Nouveau dossier - fichier / répertoire. C:\f.bat
D:\fichier.txt
... |
Il n'y a pas spécialement d'éléments permanents si ce n'est que le chemin des fichiers/dossiers termine les lignes.
Résultat attendu :
1 2 3 4
| C:\windows\script vbs.vbs
f:\Dossier
C:\f.bat
D:\fichier.txt |
Ca m'énerve vachement de ne pas trouver d'autant que j'ai retourné toutes les pages sur sed (motifs, sous-chaines...) et qu'en plus BlaireauOne m'avait donné une solution pour une question assez similaire mais dont la commande ne semble pas marcher dans ce cas...
Donc une lettre de lecteur sera le début de la chaine à extraire [a-zA-Z], et elle sera toujours suivie de l'expression :\ soit :
extraire toutes les parties de droite des chaines du ffichier commençant par [a-zA-Z]:\
voilà ça c'est le papier, maintenant en pratique ça ne va pas du tout. J'ai essayé un tas de combinaisons qui ne renvoient pour la plupart aucun résultat (pas de message d'erreur), en voici une :
sed -n '/ [a-zA-Z]:\\*$/s/^.*\( [a-zA-Z]:\\*$\)/\1/p'
A noter que j'ai inclus un espace avant la lettre de lecteur dans cet exemple, mais ce n'est pas forcément toujours le cas. Qu'est-ce qui ne va pas, et où pourrais-je trouver un cours qui détaille bien ce type d'extraction ?
Ce n'est pas tant la commande exacte qui m'intéresse mais surtout le cheminement pour mettre en forme cette recherche
Merci
Partager