La question dit plus ou moins tout. Je suis conscient que /^$/d
cela supprimera toutes les lignes vides, mais je ne vois pas comment dire «remplacer deux lignes vides ou plus par une seule ligne vierge»
Des idées?
vim
sed
regular-expression
Andrew Bolster
la source
la source
-s
option de chat - juste une note historique, ce n'est pas dans POSIX, mais semble être disponible dans BSD et GNU cat.:%!cat -s
. Apprendre quelque chose GNnew tous les jours!%s!\n\n\n\+!\r\r!g
Utilisez
\n
pour indiquer une nouvelle ligne dans le modèle de recherche. Utilisez Ctrl+ Mdans le texte de remplacement ou une référence arrière. Voir:help pattern
et:help sub-replace-special
(lié depuis:help :s
).la source
\n
cela ne fonctionne pas dans le texte de remplacement.Si vous êtes dans Vim, faites simplement ceci:
la source
man
page.Utiliser Perl:
-00
L'option de ligne de commande active le mode slurp de paragraphe, ce qui signifie que Perl lit le texte paragraphe par paragraphe plutôt que ligne par ligne.la source
Avec sed (GNU sed) 4.2.2:
la source
Je sais que c'est un code idiot, mais je voulais résoudre ce problème en moins de 10 minutes, et cela a fonctionné
la source
uniq
supprime les lignes égales adjacentes. Ce qui n'est pas ce que veut OP.