myślę najlepiej jest Perl:
perl -0pe 's/\n\Z//' days.txt
W -0
przyczyny perl traktować cały plik jako jeden wielki ciąg. -p
mówi, aby wydrukować ten ciąg z powrotem po uruchomieniu programu na nim. I -e
mówi "tutaj jest program do uruchomienia".
Wyrażenie regularne \n\Z
dopasowuje znak nowej linii, ale tylko jeśli jest to ostatni znak w tym ciągu. I s/\n\Z//
mówi, aby zastąpić taki nowy wiersz nic, usuwając go.
Powyższe polecenie wyprowadza nową wersję pliku, ale można zamiast tego zmodyfikować istniejącą, dodając opcję -i
("w miejscu"), opcjonalnie z sufiksem, który zostanie użyty do nazwania kopii zapasowej plik przed modyfikując go:
perl -i.bak -0pe 's/\n\Z//' days.txt
to rozwiązanie jest bezpieczne w że jeśli ostatni znak jest nie znak nowej linii, to nie będzie poruszony. Inne rozwiązania, które po prostu usuwają ostatni bajt, bez względu na to, co może uszkodzić taki plik.
możliwe duplikat (http [Jak mogę usunąć znak nowej linii, jeśli jest to ostatni znak w pliku?]: // stackoverflow.com/questions/1654021/how-can-i-delete-a-new-line-if-it-is-the-last-character-in-a-file) –