Salut à tous.
J’ai un fichier (attention le premier espace) comme:
1. aaaa+..................
2. aaaa+..................
..
2000. aaaa+..................
Ne connaissant pas awk, sed.
J’ai besoin d’une commande pour: supprimer tous ce qui est avant aaaa
Et d’une autre pour: supprimer la première espace, les chiffres suivit du point, le deuxième espace (donc le restant sera que aaaa et la suite)
aaaa+…
[/code][quote]…supprimer la première espace, les chiffres suivit du point, le deuxième espace…[/quote]michel@debG53SW:~$ sed -i 's/^ [0-9]*. //' fichEntree
michel@debG53SW:~$ cat fichEntree
aaaa+..................
aaaa+..................
aaaa+..................
michel@debG53SW:~$
aaaa+…
pas de caractère numérique ici
ici non plus
suite à une ligne vide et sans caractère numérique
mais dans cette ligne, il y aura 1 caractère numérique
[/code][quote]…supprimer les lignes contenant aucun nombre numérique…[/quote][code]michel@debG53SW:~$ sed -i ‘/[0-9]/! d’ fichEntree
michel@debG53SW:~$ cat fichEntree
aaaa+…
aaaa+…
aaaa+…
mais dans cette ligne, il y aura 1 caractère numérique
michel@debG53SW:~$ [/code]
[quote]…supprimer les lignes contenant aucun nombre numérique…[/quote][code]michel@debG53SW:~/tstBash$ cat fichEntree
aaaa+…
bbbb+…
cccc+…
pas de caractère numérique ici
ici non plus
suite à une ligne vide et sans caractère numérique
mais dans cette ligne, il y aura 1 caractère numérique
michel@debG53SW:~/tstBash$ [/code]sauvIFS=$IFS; IFS=$'\n'; while read ligne; do [[ "$ligne" =~ [0-9]{1,} ]] && echo $ligne; done < fichEntree; IFS=$sauvIFS[code]michel@debG53SW:~/tstBash$ sauvIFS=$IFS; IFS=$‹ \n ›; while read ligne; do [[ « $ligne » =~ [0-9]{1,} ]] && echo $ligne; done < fichEntree; IFS=$sauvIFS
aaaa+…
bbbb+…
cccc+…
mais dans cette ligne, il y aura 1 caractère numérique
michel@debG53SW:~/tstBash$ [/code]
[quote]supprimer les lignes contenant aucun nombre numérique et supprimer la première espace, les chiffres suivit du point, le deuxième espace[/quote]sauvIFS=$IFS; IFS=$'\n'; while read ligne; do [[ "$ligne" =~ ( [0-9]{1,}. )(.*) ]] && echo ${BASH_REMATCH[2]}; done < fichEntree; IFS=$sauvIFS
Je ne suis pas encore arrivé à faire fonctionner cette ligne de commandes sans modifier la variable [mono]IFS[/mono].
Je ne sais pas encore où chercher mon erreur, mais ça ne semble pas venir de la fonction [mono]read[/mono] du [mono]bash[/mono].
Il est d’ailleurs possible que ce soit à cause de l’interprétation de cette [mono]regex[/mono] par [mono]bash[/mono] qu’il m’est necessaire de redéfinir la variable [mono]IFS[/mono].
Je cherche…
=======
Merci pour les conseils concernant la [mono]regex[/mono].
EDIT : Bein oui, C’était bien la [mono]regex[/mono] qu’il fallait mettre dans une variable pour ne pas avoir à modifier [mono]IFS[/mono]
Je suis long à la détente
Il va falloir que j’en apprenne beaucoup plus sur les [mono]regex[/mono]
Si tu as quelques liens (ou un bon bouquin) sur les [mono]regex[/mono], je prends.