Isoler mots identiques (egrep / sed)

Fermé
Idris - 22 mai 2012 à 16:04
 Idris - 22 mai 2012 à 19:40
Bonjour,

j'ai un fichier xml extrait d'un corpus, le texte se présente sous la forme <balise1>langue source</balise>|<balise1>langue cible</balise> puis <balise2>langue source</balise>|<balise2>langue cible</balise> etc.
le but est d'extraire les mots identiques dans la langue source et la langue cible.

Sur le terminal d'invite de commandes de linux j'ai essayé de faire la 1ère étape qui est d'isoler les lignes où apparaissent des mots identiques/non-traduits:

egrep '<s id="[^"]+">.*\b([a-zA-Z]{2,})\b.*<\/s>\|<s id="[^"]+">.*?\1.*?<\/s>' fichier.xml


ça me donne un résultat plus ou moins satisfaisant, le problème est ensuite d'isoler uniquement les mots. Je pense qu'il me faut utiliser egrep -o ou sed dans un pipe après cette commande, mais je suis complètement débutante et je ne vois pas comment les utiliser (je connais juste l'utilisation de base de sed càd la substitution)

une simple piste de réponse serait la bienvenue!

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 410
22 mai 2012 à 16:46
Salut,

On peut avoir un exemple concret AVANT => APRÈS de ce que tu veux obtenir exactement ?
0
avec mon premier egrep j'isole une ligne comportant un mot identique de chaque côté du séparateur, par exemple:
<s id="25">I work in the Lapell' s factory .</s>|<s id="22">Je travaille à l' usine Lapell .</s>

et dans la deuxième étape il faut que j'isole simplement la chaîne de caractères identiques donc ici "Lapell". Sauf qu'il faut que je trouve une commande et une expression régulière pour isoler toutes les chaînes de caractères identiques dans le texte, pas un seul mot précis... C'est là que je coince.
0