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?
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?
Odpowiedzi:
Ponowne wdrożenie pomysłu vonbranda w Perlu, pod warunkiem, że plik jest wystarczająco mały:
perl -p00e 's/\n(?!\Z)/ /g' your_file
To zadziałało dla mnie.
tr '\n' ' ' < file_with_new_line | sed 's/\ $//g' > file_with_space
tr
polecenie zastępuje wszystkie znaki nowej linii spacjami, a twoje sed
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ąc g
w sed
poleceniu. Ponieważ używasz $
, może pasować tylko na końcu, nie g
ma sensu. Nie musisz też uciekać w przestrzeń, `` nie ma znaczenia.
-s
I-d
opcji wydaje się stworzony do tej sprawy.