# Bash garder une valeur d'un contenu

**URL:** <https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630 "2016-02-21T22:06:07Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![kripteks](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71c47a/32.png) [@kripteks](https://www.debian-fr.org/u/kripteks)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/1 "2016-02-21T22:06:07Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/2 "2016-02-21T22:06:08Z")

</div>

[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:~$ `

---

<div class="post-metadata">

**Author:** ![kripteks](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71c47a/32.png) [@kripteks](https://www.debian-fr.org/u/kripteks)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/3 "2016-02-21T22:06:25Z")

</div>

Merci ![](http://www.debian-fr.org/images/smilies/023.gif)

Un dernière question ![](http://www.debian-fr.org/images/smilies/icon_lol.gif)  
Il me faudrait une commande pour supprimer les lignes contenant aucun nombre numérique ?

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/4 "2016-02-21T22:06:25Z")

</div>

[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]

---

<div class="post-metadata">

**Author:** ![kripteks](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71c47a/32.png) [@kripteks](https://www.debian-fr.org/u/kripteks)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/5 "2016-02-21T22:06:39Z")

</div>

Merci

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/6 "2016-02-21T22:06:40Z")

</div>

Pour répondre plus précisément au titre de ce fil : «&nbsp;bash garder une valeur d’un contenu&nbsp;»

=\> 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=$sauvIFS``michel@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=$‹&nbsp;\n&nbsp;›; while read ligne; do [[«&nbsp;$ligne&nbsp;» =~ [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]

[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`

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/7 "2016-02-21T22:06:40Z")

</div>

salut,

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

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 10:06 UTC](https://www.debian-fr.org/t/bash-garder-une-valeur-dun-contenu/67630/8 "2016-02-21T22:06:59Z")

</div>

@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 🙂

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.

=======
