J'ai affaire à un nom de fichier spécifique, et j'ai besoin d'en extraire des informations.correspondant à une sous-chaîne spécifique avec des expressions régulières en utilisant awk
La structure du nom de fichier est similaire à: « 20100613_M4_28007834.005_F_RANDOMSTR.raw.gz »
avec RANDOMSTR une chaîne de 22 caractères maximum, et qui peut contenir une sous-chaîne (ou non) avec le format « - W [0-9]. [0-9] {2}. [0-9] {3} ". Cette sous-chaîne a également la particularité de commencer par "-W".
L'information dont j'ai besoin d'extraire est la sous-chaîne de RANDOMSTR sans cette sous-chaîne optionnelle. Je veux implémenter ceci dans un script bash, et jusqu'ici la meilleure option que j'ai trouvée est d'utiliser gawk avec une expression régulière. Ma meilleure tentative échoue si loin:
gawk --re-interval '{match ($0,"([0-9]{8})_(M[0-9])_([0-9]{8}\\.[0-9]{3})_(.)_(.*)(-W.*)?.raw.gz",arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz"
OTHER-STRING-W0.40+045
Les résultats attendus sont:
gawk --re-interval '{match ($0,$regexp,arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_SOME-STRING.raw.gz"
SOME-STRING
gawk --re-interval '{match ($0,$regexp,arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz"
OTHER-STRING
Comment puis-je obtenir l'effet désiré.
Merci.
Vous avez dit que la sous-chaîne a le motif '" -W [0-9]. [0-9] {2}. [0-9] {3} "' Pourtant, votre exemple d'entrée contient '... W0.40 + 045.raw.gz'. Avez-vous besoin de répondre aux deux? –
Je n'inclue pas le fichier ".raw.gz" dans la sous-chaîne. – RogerFC
Désolé, je voulais attirer l'attention sur le signe plus qui ne serait pas couvert par votre motif. –