Détecter mots majuscules contenant tr

Le
andre_debian
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é
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Faivre
Le #26402511
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é
andre_debian
Le #26402519
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
Pierre Faivre
Le #26402522
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


andre_debian
Le #26402530
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é
Pierre Faivre
Le #26402555
'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é
andre_debian
Le #26402585
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é
Etilem
Le #26402840
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
Publicité
Poster une réponse
Anonyme