Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

Détecter mots majuscules contenant tr

7 réponses
Avatar
andre_debian
Bonsoir,

J'ai cherch=E9 en vain :
comment d=E9tecter dans un fichier texte tous les mots majuscules
qui contiennnent "tr" en minuscules.
Exemples :
trAP=C8ZE =CAtrE LUStrE
et les r=E9=E9crire comme ceci :
TRAP=C8ZE =CATRE LUSTRE

Merci d'avance.

Andr=E9

7 réponses

Avatar
Pierre Faivre
Bonsoir,
peux tu essayer avec ça :
$ echo trAPÈZE ÊtrE LUStrE lustre être trapèze motRE | sed -E
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
TRAPÈZE ÊTRE LUSTRE lustre être trapèze motRE
Pierre
Le 21/06/2016 à 21:22, a écrit :
Bonsoir,
J'ai cherché en vain :
comment détecter dans un fichier texte tous les mots majuscules
qui contiennnent "tr" en minuscules.
Exemples :
trAPÈZE ÊtrE LUStrE
et les réécrire comme ceci :
TRAPÈZE ÊTRE LUSTRE
Merci d'avance.
André
Avatar
andre_debian
On Tuesday 21 June 2016 22:22:26 you wrote:
peux tu essayer avec ça :
$ echo trAPÈZE ÊtrE LUStrE lustre être trapèze motRE | sed -E
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
TRAPÈZE ÊTRE LUSTRE lustre être trapèze motRE
Pierre

Je ne connais pas tous les mots majuscules contenant "tr" en minuscules,
car le fichier est très important, sinon, c'est très facile, par ce scr ipt :
sed -i 's/trAPÈZE/TRAPÈZE/g' fichier
sed -i 's/ÊtrE/ÊTRE/g' fichier
sed -i 's/LUStrE/LUSTRE/g' fichier
Il faut détecter chaque mot en majuscules conternant "tr"
en minuscules, puis les mettre tous en majuscules.
Le 21/06/2016 à 21:22, a écrit :
comment détecter dans un fichier texte tous les mots majuscules
qui contiennnent "tr" en minuscules.
Exemples :
trAPÈZE ÊtrE LUStrE
et les réécrire comme ceci :
TRAPÈZE ÊTRE LUSTRE
Avatar
Pierre Faivre
oui, c'est ce que je croyais avoir compris, donc pour modifier
directement le fichier :
$sed -Ei
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
fichier
Le 21/06/2016 à 23:24, a écrit :
On Tuesday 21 June 2016 22:22:26 you wrote:
peux tu essayer avec ça :
$ echo trAPÈZE ÊtrE LUStrE lustre être trapèze motRE | sed -E
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
TRAPÈZE ÊTRE LUSTRE lustre être trapèze motRE
Pierre

Je ne connais pas tous les mots majuscules contenant "tr" en minuscules,
car le fichier est très important, sinon, c'est très facile, par ce script :
sed -i 's/trAPÈZE/TRAPÈZE/g' fichier
sed -i 's/ÊtrE/ÊTRE/g' fichier
sed -i 's/LUStrE/LUSTRE/g' fichier
Il faut détecter chaque mot en majuscules conternant "tr"
en minuscules, puis les mettre tous en majuscules.
Le 21/06/2016 à 21:22, a écrit :
comment détecter dans un fichier texte tous les mots majuscules
qui contiennnent "tr" en minuscules.
Exemples :
trAPÈZE ÊtrE LUStrE
et les réécrire comme ceci :
TRAPÈZE ÊTRE LUSTRE

Avatar
andre_debian
On Tuesday 21 June 2016 23:34:53 Pierre Faivre wrote:
oui, c'est ce que je croyais avoir compris, donc pour modifier
directement le fichier :
$sed -Ei
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g '
fichier

Merci, ça marche bien.
Mais pourquoi tous ces "upper", la commande peut-elle
modifier tous les mots concernés d'un texte sans limite ?
André
Avatar
Pierre Faivre
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
c'est logique
il vérifie si il y a 0,1, ou plusieurs lettres MAJ devant le 'tr' et au moins une lettre MAJ après
ou
si il y a au moins une lettre MAJ avant le 'tr', et si il y a 0,1, ou plusieurs lettres MAJ après
ce sed peut fonctionner sur des gros fichiers sans problème.
Le 22/06/2016 à 10:51, a écrit :
On Tuesday 21 June 2016 23:34:53 Pierre Faivre wrote:
oui, c'est ce que je croyais avoir compris, donc pour modifier
directement le fichier :
$sed -Ei
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
fichier

Merci, ça marche bien.
Mais pourquoi tous ces "upper", la commande peut-elle
modifier tous les mots concernés d'un texte sans limite ?
André
Avatar
andre_debian
On Wednesday 22 June 2016 16:50:46 Pierre Faivre wrote:
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2/g'
c'est logique
il vérifie si il y a 0,1, ou plusieurs lettres MAJ devant le 'tr' et au
moins une lettre MAJ après
ou
si il y a au moins une lettre MAJ avant le 'tr', et si il y a 0,1,
ou plusieurs lettres MAJ après
ce sed peut fonctionner sur des gros fichiers sans problème.

Super, j'ai pu remettre tous les fichiers au carré !
Grand merci (et syntaxe sed enregistrée, ça peut reservir) .
Bonne soirée.
André
Avatar
Etilem
bonjour,
Le mer. 22 juin 2016 20:47:27 CEST, a écri t:
On Wednesday 22 June 2016 16:50:46 Pierre Faivre wrote:
's/([[:upper:]]*)tr([[:upper:]]+)|([[:upper:]]+)tr([[:upper:]]*)/1TR2 /g'
c'est logique
il vérifie si il y a 0,1, ou plusieurs lettres MAJ devant le 'tr'
et au moins une lettre MAJ après
ou
si il y a au moins une lettre MAJ avant le 'tr', et si il y a 0,1,
ou plusieurs lettres MAJ après
ce sed peut fonctionner sur des gros fichiers sans problème.

Super, j'ai pu remettre tous les fichiers au carré !
Grand merci (et syntaxe sed enregistrée, ça peut reservir) .
Bonne soirée.
André

pour aller + loin dans la réflexion :
$ cat test.txt

trE Etr ÊtrE trAPÈZE LUStrE trAIN ULtrA FILtrE AUtrEMENT trAINTRA IN ULTRAFILtrE
tr trAINtrAIN ULtrAFILtrE trAVAil AutrEMENT
$ perl -p -e's/btr([A-Z]+)b/TR$1/g;s/b([A-Z]+)trb/$1TR/g;s/b([A-Z]+)t r([A-Z]+)b/$1TR$2/g' test.txt

TRE ETR ÊTRE TRAPÈZE LUSTRE TRAIN ULTRA FILTRE AUTREMENT TRAINTRA IN ULTRAFILTRE
tr trAINtrAIN ULtrAFILtrE trAVAil AutrEMENT
--
Etilem