Je travaille avec des transcriptions et j'ai eu du mal à la normalisation. Certains d'entre eux ont des supports carrés au sein d'autres supports carrés pour spécifier les différents événements de bruits / sonores pouvant être trouvés lors de l'écoute du fichier audio correspondant. Ceci est un exemple de la ligne d'un fichier: dans chaque ligne, le format correspond à p> ma sortie idéale serait: p> La sortie doit ressembler à quelque chose de similaire à celui-ci: p> J'ai essayé de résoudre ce problème à l'aide de SED, mais cela ne me dérangerait pas d'essayer Perl ou tout autre outil de traitement de texte. Ma tentative la plus proche jusqu'à présent est la suivante: p>
sed 's/\[[^]]*]//g'
3 Réponses :
Basé sur votre exemple, quelque chose comme ceci peut être facilement exprimé dans sed code> aussi, mais les variations de regex diffèrent entre les dialectes. Si vous avez
sed -e code> ou
sed -r code>, vous pouvez probablement utiliser cette regex Verbatim. P> p>
Génial, je prenais un tour totalement mauvais, et c'était si facile à la place. Cependant, vous devez inclure / code> quelque part, comme la dernière pièce à supprimer est
[bruit_bkgspeech /] code>.
Vous pouvez utiliser cette commande si votre fichier est nommé ceci m'a donné sur votre exemple: p> étape par étape Cette commande fait: p> audio code>:
U012_w038 Ouais vous pouvez lire demain vous enregistrez-vous maintenant ceci est gênant EH code> p>
SED 's / \ [\ ([^]] *: \) // g' code>: supprime tout entre
[ code> et
et
: code> inclus p> li>
s / \ [[[[^]] *] // g ' code>: supprime tout entre
[ code> et
] code> inclus. p> li>
SED '// g' code>: supprime le reste
] code> p> l> li>
SED 'S / * / / G' CODE>: Supprime toutes les ébauches consécutives. P> LI>
ul> p>
sed code> est une langue de script; Vous pouvez combiner toutes ces commandes dans un script unique au lieu de quatre processus distincts.
Vous avez absolument raison, j'ai corrigé ma réponse en conséquence à votre commentaire.
Cette version détecte les supports non appariés. p> p>
Compte tenu de l'OP, des supports non appariés signifient probablement mal-formé.
Le niveau maximum des crochets imbriqués 2? Je veux dire, c'est littéralement des crochets dans d'autres crochets i>, ou peut-il être Supports carrés à d'autres supports carrés au sein d'autres crochets ... I>? De votre part, il semble que la réponse est que le niveau de nidification est au plus 2.
Le problème général de la nidification arbitraire ne peut être traité dans Regex. Si vous n'avez besoin que de deux niveaux de nidification, cela pourrait probablement être fait, mais vous auriez besoin d'un catalogue des annotations qui ne font pas partie de la boîte de dialogue. Nous pouvons faire une regex pour supprimer
[rire] code> et
[bruit] code> etc. mais probablement il y en a plus d'entre eux dans le matériau. Et / ou spécifier une règle, comme un seul jeton alphabétique + des traitements de soulignement entre crochets peut être supprimé, tandis que d'autres supports carrés doivent être supprimés seuls
S / \ [[[[] \ + \ \ | |] // g code>
Merci à tous pour votre aide. Après avoir vérifié les transcriptions, j'ai remarqué que certaines lignes ne disposent que d'une paire de crochets et d'autres qui en ont deux, comme l'exemple (et c'est bien le niveau maximum de supports imbriqués