Je cherche un moyen de supprimer des caractères spécifiques dans une chaîne correspondant à un motif regex. J'ai stocké du texte avec des sauts de ligne dans un fichier séparé par des tabulations supposé avoir un enregistrement par ligne et j'essaie de remplacer tous les sauts de ligne par des espaces. Les sauts de ligne ne se produisent pas dans la dernière colonne (qui est une colonne courte avec une clé alphanumérique).Remplacer un caractère spécifique dans un motif
La façon de le résoudre est à mon humble avis de remplacer toutes les occurrences de \n
dans le schéma suivant:
[^\t]*\t[^\t]*
Ma solution jusqu'à maintenant utilise trois étapes:
- remplacer le « bon »
\n
avec une chaîne spéciale absente du reste du texte (par exemple long nombre) en utilisants/\([^\t]*\t{x}[^\t]*\)\n/\1#12398754987235649876234#/g
avecx
étant un de moins que le nombre prévu de colonnes dans mes fichiers - remplacer tous les (« mauvais »)
\n
avec un espace - remplacer le numéro long avec une nouvelle ligne
Mais j'ai tout à fait quelques giga-octets de fichiers texte et je suis à la recherche d'une façon de faire ceci dans un uniquesed
étape.
Exemple d'entrée:
foo \t Each multiplex has screens allocated \n
to each studio. \t abc \n
bar \t The screens need filling. \t bcd \n
123 \t Studios have to create product to fill \n
their screen, and the amount of good product is limited. \t cde \n
Sortie:
foo \t Each multiplex has screens allocated to each studio. \t abc \n
bar \t The screens need filling. \t bcd \n
123 \t Studios have to create product to fill their screen, and the amount of good product is limited. \t cde \n
Les lignes commencent-elles littéralement par un nombre? – Bohemian
Non. J'ai modifié mon exemple pour supprimer l'ambiguïté.Il n'y a AUCUN pattern dans les colonnes (peut être du texte, des chiffres, de la ponctuation ...), sauf pour le '\ t 'qui est seulement utilisé pour séparer les colonnes. – ATN
Vous essayez d'enlever tout '\ n' qui ne * suit * pas". ", N'est-ce pas? – Beta