Jak mogę zastąpić wszystkie nowe linie spacją oprócz ostatniej nowej linii. Mogę zastąpić wszystkie znaki nowej linii spacją, tr
ale jak mogę to zrobić z pewnymi wyjątkami?
bash
shell-script
text-processing
tr
Gilles „SO- przestań być zły”
źródło
źródło
-s
I-d
opcji wydaje się stworzony do tej sprawy.Możesz użyć,
tr
aby zastąpić wszystkie znaki nowej linii spacją, przekazać dane wyjściowesed
i zamienić ostatnią spację z powrotem na nową linię:źródło
Ponowne wdrożenie pomysłu vonbranda w Perlu, pod warunkiem, że plik jest wystarczająco mały:
źródło
Coś takiego
sed -e 's;\n\(.\); \1;'
powinno zrobić ...źródło
To zadziałało dla mnie.
źródło
tr
polecenie zastępuje wszystkie znaki nowej linii spacjami, a twojesed
polecenie usuwa ostatnią spację. Powoduje to, że plik nie ma ostatniej nowej linii, więc nie jest to pytanie, o które pyta. Nawiasem mówiąc, nie ma sensu int używającg
wsed
poleceniu. Ponieważ używasz$
, może pasować tylko na końcu, nieg
ma sensu. Nie musisz też uciekać w przestrzeń, `` nie ma znaczenia.