web-dev-qa-db-fra.com

Faire correspondre (et supprimer) LF dans l'expression régulière Notepad ++

Dans Notepadd ++, le \r\n regex trouvera toutes les combinaisons CRLF. Mais j'ai quelques lignes qui se terminent juste par LFs. Tout d'abord, c'est quoi ça? Ensuite, comment puis-je faire correspondre et supprimer exactement cela? Ni \r ou \n travaux.

20
1252748

LF signifie "Line Feed"

Vous pouvez en lire plus sur cette réponse sur serverfault.se :

CR LF signifie "Carriage Return, Line Feed" - c'est une gueule de bois DOS de l'ancien temps où certains appareils nécessitaient un retour chariot, et certains appareils nécessitaient un saut de ligne pour obtenir une nouvelle ligne, Microsoft a donc décidé de simplement faire en sorte qu'une nouvelle ligne ait les deux caractères, afin qu'ils sortent correctement sur tous les appareils.

Les programmes Windows attendent leur format de nouvelle ligne dans CRLF (\r\n). * nix attend juste LF data (\n). Si vous ouvrez un document texte Unix dans le Bloc-notes sous Windows, vous remarquerez que tous les sauts de ligne disparaissent et que le document entier se trouve sur une seule ligne. C'est parce que le Bloc-notes attend des données CRLF et que le document Unix n'a pas le \r personnage.

Il existe des applications qui convertiront ceci pour vous sur une distribution standard * nix (dos2unix et unix2dos)

Pour ceux qui se demandent, un retour chariot et un saut de ligne diffèrent de l'époque des jours de la machine à écrire, quand un retour chariot et un saut de ligne étaient deux choses différentes. L'un vous amènerait au début de la ligne (retour chariot) et l'autre vous déplacerait d'une ligne plus bas, mais au même emplacement horizontal (saut de ligne)

Ainsi, vous devriez pouvoir le remplacer par \n.

enter image description here

enter image description here

27
Jerry

En faisant preuve de bon sens, je suggérerais l'approche suivante:

  1. Remplacez tous les CRLF par une chaîne spéciale (dont vous êtes sûr qu'elle n'est pas présente dans le fichier), dites "fuuuuuu !!!".
  2. Remplacez les LF par une chaîne vide.
  3. Remplacez toutes les chaînes spéciales ("fuuuuuu !!!") par CRLF.

Et vous avez terminé.

12
bazinac

Réglez l'encodage sur ANSI.

Alors\n ne verra que "LF"

1
user8628312