Bonjour
En n’utilisant que les fonctionnalités du shell bash
:
while read -r; do [[ $REPLY =~ ^\{([^}]*) ]] && echo "${BASH_REMATCH[1]}"; done < fichierSource.txt >> fichierCible.txt
Ce qui donnerait :
michel@debbull:~$ cat fichierSource.txt
blablablablablablablablabla
blablablablablablablablabla
{!:ù6576ku yhtyu jyyti -(è-(}
blablablablablablablablabla
blablablablablablablablabla
bloblobloblobloblobloluykuyt uyutut
{bli bli bli bli bli bli bli}
kjg momoo tyrtesdf ù
{aaa eee rrr tt b}
xxxxxxxx x xxxxxxxxx xxxxxxxx
{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr}
zzzzzzzzzzzzzzzzzzzz
{pppppppppppppp ppppppp}
michel@debbull:~$
michel@debbull:~$ cat fichierCible.txt
badaboumyoupie
petitpatapon
hippopotameentutu
michel@debbull:~$
michel@debbull:~$ while read -r; do [[ $REPLY =~ ^\{([^}]*) ]] && echo "${BASH_REMATCH[1]}"; done < fichierSource.txt >> fichierCible.txt
michel@debbull:~$
michel@debbull:~$ cat fichierCible.txt
badaboumyoupie
petitpatapon
hippopotameentutu
!:ù6576ku yhtyu jyyti -(è-(
bli bli bli bli bli bli bli
aaa eee rrr tt b
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
pppppppppppppp ppppppp
michel@debbull:~$
Telle quelle est, la ligne de commande bash
que j’ai proposée ne recopiera à la fin de fichierCible.txt
que ce qui est dans les lignes contenues dans fichierSource.txt
qui commencent par un caractère {
jusqu’au premier caractère }
trouvé (caractères {
et }
exclus).
Mais en fonction des réponses que Le_GensBon donnera aux questions posées dans mon précédent message, on pourra peut-être adapter tout ça à ce qu’il cherche à obtenir.