Il s'agit probablement d'un problème de syntaxe de script Sed et shell, ainsi que de Regex. (Edit: peut-être un problème d'E/S, comme regex a travaillé lors de la lecture du fichier dans le shell bash, mais le fichier .txt
réel n'a pas été modifié comme on le souhaite)Sed Regex OSX trouver des chiffres romains et remplacer par une chaîne vide. Erreur "modèle de remplacement non terminé"
Essayer de préparer un dossier .txt
pour un traitement du langage naturel travail. Je voulais supprimer quelques chiffres romains dans un fichier texte contenant les sonnets de Shakespeare, chaque sonnet commençant par un chiffre romain tel que IX.
et XVIII.
qui représente le titre du sonnet individuel, y compris le caractère décimal.
Exemple intput texte:
XXV.
Let those who are in favour with their stars
Of public honour and proud titles boast,
sortie souhaitée:
Let those who are in favour with their stars
Of public honour and proud titles boast,
Suivant l'exemple en this question, j'ai essayé toutes les commandes suivantes dans le shell bash Terminal:
$ sed -i 's/[IVXLC]{1,}[.]//g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/^$/g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/()/g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/[]/g' sonnets.txt
L'idée était de remplacer un match avec une chaîne vide. Depuis cela ne fonctionne pas, j'ai essayé de remplacer correspondre avec un espace:
$ sed -i 's/[IVXLC]{1,}[.]/^ $/g' sonnets.txt
Pas de chance. Toutes les commandes ci-dessus sont revenus la même erreur:
sed: 1: "sonnets.txt": unterminated substitute pattern
Je l'ai testé l'expression régulière dans le champ « trouver » sur https://regexr.com/ et il semblait être correct. Le fichier cible était dans le répertoire de travail. Une idée de ce qui a mal tourné? Quels caractères dois-je utiliser dans le champ "remplacer" de la commande Sed? Dois-je modifier la regex et/ou la commande Sed?
Pouvez-vous coller un exemple de texte? Quelle est l'entrée et comment voulez-vous que la sortie ressemble. ? –
Je pense que les '{' et '}' doivent être échappés. '\ {' et '\}'. Les crochets peuvent également avoir besoin d'être échappés. –
'{} []' ne semble pas être un problème lors du test sur https://regexr.com/ – Elan