regex - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 29-04-2013 à 23:03:29
J'imagine que les données seront traitées ligne par ligne, donc le "\n" n'est pas un séparateur de champ
Le pattern " *; *" ne suffit pas ?
Marsh Posté le 30-04-2013 à 00:41:43
Bonsoir,
Les données ne sont pas traitées ligne par ligne.
Marsh Posté le 05-06-2013 à 23:26:01
je suis nul en sed et awk mais pourquoi pas remplacer toutes les ; par des \n (à supposer que le fichier soit intégralement comme ça
j'ai donc ceci, en copiant-collant honteusement un sed trouvé sur google pour enlever les espaces au début de chaque ligne
tr ";" \\n < test | sed -e 's/^[ \t]*//'
ce qui me donne
AAA-BBB-CCC-0010
AAA-BBB-CCC-0020
AAA-BBB-CCC-0030
AAA-BBB-CCC-0050
avec un espace à la fin de la deuxième ligne, qu'on pourrait aussi enlever, donc :
tr ";" \\n < test | sed 's/^[ \t]*//;s/[ \t]*$//'
on pourrait ainsi se contenter d'attraper la n-ième ligne pour avoir la valeur. sed '/^$/d' supprime toutes lignes vides.
Sinon, je ne comprends pas trop ce que tu entends par "Je veux séparer une chaîne" ni ce qu'est censée faire ta regexp.
Marsh Posté le 29-04-2013 à 19:00:49
Bonjour à tous,
Je cherche à séparer une chaine contenant soit un séparateur ";" ou " ;" ou bien un saut de ligne "\n".
Mon texte est du genre:
J'ai pensé faire une regex de la forme:
mais cela ne marche pas comme je veux ...
Après je me suis demandé comment faire pour préciser dans une regex, que je voulais prendre la 3e occurence ou la 4e occurence d'un pattern ?
Y-a-t-il quelqu'un qui masterise en regex et qui pourrait m'aider ?
Merci pour votre aide.