Salut,

à partir d'un fichier 1.txt contenant ce genre de lignes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
expression1 pouvant contenir des caractères spéciaux C:\windows\abc.txt
expression2 pouvant contenir des caractères spéciaux C:\windows\system32\z.dll
expression3 pouvant contenir des caractères spéciaux F:\zeighnzcjrt.sys
expression4 pouvant contenir des caractères spéciaux C:\a.inf
etc
je souhaite isoler dans un fichier 2.txt les chemins, càd obtenir ce résultat

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
C:\windows\abc.txt
C:\windows\system32\z.dll
F:\zeighnzcjrt.sys
C:\a.inf
L'algorithme serait - à mon sens - le suivant :

pour chaque ligne du fichier 0.txt -> extraire toutes les chaîne de caractères qui commencent par l'expression : [a-zA-Z]:\
J'ai essayé un certain nombre de commandes et il me semble que awk est la plus appropriée. En m'inspirant des quelques pages web relatives à ce genre de pb, j''en suis arrivé à ceci :

awk -F.*: '{print ".*:" $2 }' 1.txt

qui donne un résultat presque potable mais loin des attentes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
.*:\windows\abc.txt
.*:\windows\system32\z.dll
.*:\zeighnzcjrt.sys
.*:\a.inf
Icomplet et inabouti car je souhaiterais que la lettre de lecteur apparaisse (C, F, etc) et d'autre part, je souhaite définir le séparateur le plus précisément possible, càd un truc du genre :

awk -F[a-zA-Z]:\\ '{print......}

Malheureusement la plupart des combinaisons testées avec ce séparateur n'aboutissent à rien d'exploitable ou à des erreurs de syntaxe

Est-ce que awk est selon vous la bonne direction ? comment utiliser correctement ce séparateur ?

Merci