Bash garder une valeur d'un contenu

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)

Merci d’avance.

[code]michel@debG53SW:~$ cat fichEntree

  1. aaaa+…
  2. aaaa+…
  3. 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:~$

Merci

Un dernière question
Il me faudrait une commande pour supprimer les lignes contenant aucun nombre numérique ?

[code]michel@debG53SW:~$ cat fichEntree

  1. aaaa+…
  2. aaaa+…
  3. 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

  1. aaaa+…
  2. aaaa+…
  3. aaaa+…
    mais dans cette ligne, il y aura 1 caractère numérique
    michel@debG53SW:~$ [/code]

Merci

Pour répondre plus précisément au titre de ce fil : “bash garder une valeur d’un contenu”

=> Seulement avec l’interpréteur bash :

[quote]…supprimer la première espace, les chiffres suivit du point, le deuxième espace…[/quote][code]michel@debG53SW:~/tstBash$ cat fichEntree

  1. aaaa+…
  2. bbbb+…
  3. cccc+…
    michel@debG53SW:~/tstBash$ [/code]sauvIFS=$IFS; IFS=$'\n'; while read ligne; do [[ "$ligne" =~ ( [0-9]*. )(.*) ]] && echo ${BASH_REMATCH[2]}; done < fichEntree; IFS=$sauvIFSmichel@debG53SW:~/tstBash$ sauvIFS=$IFS; IFS=$'\n'; while read ligne; do [[ "$ligne" =~ ( [0-9]*. )(.*) ]] && echo ${BASH_REMATCH[2]}; done < fichEntree; IFS=$sauvIFS aaaa+.................. bbbb+.................. cccc+.................. michel@debG53SW:~/tstBash$
    =======

[quote]…supprimer les lignes contenant aucun nombre numérique…[/quote][code]michel@debG53SW:~/tstBash$ cat fichEntree

  1. aaaa+…
  2. bbbb+…
  3. 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

  1. aaaa+…
  2. bbbb+…
  3. cccc+…
    mais dans cette ligne, il y aura 1 caractère numérique
    michel@debG53SW:~/tstBash$ [/code]

salut,

le traitement de l’IFS n’est pas utile.
la regex serait mieux dans une variable.

@Watael

Bonjour

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 :slightly_smiling:

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.

=======