awk et séparateur caractères spéciaux
Salut,
à partir d'un fichier 1.txt contenant ce genre de lignes
Code:
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:
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 :
Citation:
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:
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 ;)