Pytanie mniej więcej mówi wszystko. Wiem, że /^$/d
usunie wszystkie puste linie, ale nie widzę, jak powiedzieć „zamień dwie lub więcej pustych linii na jedną pustą linię”
Jakieś pomysły?
vim
sed
regular-expression
Andrew Bolster
źródło
źródło
-s
opcji cat - tylko historyczna notatka, nie ma jej w POSIX, ale wydaje się być dostępna w BSD i GNU cat.:%!cat -s
. Naucz się czegoś GNnew każdego dnia!%s!\n\n\n\+!\r\r!g
Użyj,
\n
aby wskazać nową linię we wzorcu wyszukiwania. Użyj Ctrl+ Mw tekście zastępczym lub odnośniku wstecznym. Zobacz:help pattern
i:help sub-replace-special
(link z:help :s
).źródło
\n
nie działa w tekście zastępczym.Jeśli w Vimie, po prostu zrób to:
źródło
man
strony.Za pomocą Perla:
-00
opcja wiersza poleceń włącza tryb slurp akapitowy, co oznacza, że Perl czyta tekst akapit po akapicie, a nie linia po linii.źródło
Z sed (GNU sed) 4.2.2:
źródło
Wiem, że to głupi kod, ale chciałem rozwiązać ten problem w niecałe 10 minut i zadziałało
źródło
uniq
usuwa sąsiednie równe linie. Nie tego chce OP.