Nowe posty

Autor Wątek: jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka  (Przeczytany 4761 razy)

johnyjj2

  • Gość
Witam!

Otóż mam plik tekstowy, w nim kilka linijek tekstu. Na końcu każdej linijki jest enter. Linux i Windows inaczej zapisują enter. W jednym wypadku są to dwa znaki, w drugim jeden, bodajże tylko znak powrotu karetki.

Potrzebuję tego pliku tekstowego jako inputu do pewnej aplikacji, która wysypuje mi się prawdopodobnie z powodu złego entera na końcu każdej z linijek.

Jak sprawdzić jaki enter jest w pliku tekstowym? Używam Ubuntu 9.10, ale podejrzewam, że to żadna różnica w wypadku mojego pytania.

Potrzebuję tego pliku tekstowego, ponieważ: http://www.voxforge.org/home/forums/message-boards/acoustic-model-discussions/runall.pl-says-that-dictionary-doesnt-fit-phone-list#9nD6R9SGrh_AO-6UDIpq0A

Z góry dzięki!
Pozdrawiam!

arctgx

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #1 dnia: 2009-12-08, 20:51:04 »
Jeśli zależy Ci po prostu na przekonwertowaniu tekstu,  poszukaj na temat iconv lub recode. Jeśli dobrze pamiętam, także polecenie tr -d \\r nowy_plik usuwa zbędny znak. Uważaj ze znakiem przekierowania, by nie nadpisać niechcący istniejącego pliku ;).

Jeśli chcesz jednak dosłownej odpowiedzi zamiast konwersji, wypróbuj cat -v plik. Powinno pokazać dodatkowy znak jako ^M.

johnyjj2

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #2 dnia: 2009-12-09, 02:35:57 »
Dzięki za odpowiedź!

Polecenie "tr -d \\r" niestety nie działa. Zarówno przed jego wykonaniem, jak i po "cat -v" wypisuje ^M na końcu każdej linijki.

Pozdrawiam!

ZipoKing

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #3 dnia: 2009-12-09, 09:13:35 »
Jest taki mały programik, który nazywa się dos2unix (w Ubuntu znajduje się w pakiecie tofrodos) - zajmuje się on tym, czego potrzebujesz, czyli konwertowaniem znaków końca wierszła Windows<->Linux

chmooreck

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #4 dnia: 2009-12-09, 09:37:50 »
Cytat: johnyjj2
Polecenie "tr -d \\r" niestety nie działa.
Zrozumiałeś polecenie przed jego wydaniem ?
Dalsza część, czyli przekierowanie do pliku była kluczowa dla zapisu wyniku działania.

Dobra rada na przyszłość: zanim wydasz jakieś polecenie zrozum jak działa, bo ktoś złośliwy może Ci napisać coś, czego skutek nie będzie zbyt dobry dla Twojego systemu (np. sudo rm -R /usr).

johnyjj2

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #5 dnia: 2009-12-09, 16:37:54 »
Toż to oczywiste, że potem muszą wystąpić nazwy dwóch plików, wejściowego i wyjściowego. I rzecz jasna użyłem znaku większości i znaku mniejszości w odpowiednich miejscach. Myślałem, że taki skrót myślowy ("tr -d \\r") jest zrozumiały. Rzecz jasna miałem na myśli polecenie "tr -d \\r plik_b", które nie zadziałało. Po jego wykonaniu polecenie "cat -v plik_b" znowu wypisywało na końcu linijki znaki, które poprzednie polecenie miało usunąć, a których nie usunęło.
Pozdrawiam!

chmooreck

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #6 dnia: 2009-12-09, 22:14:19 »
tr -d '\\r'
lub
tr -d "\\r"
lub
tr-d \\\\r

arctgx

  • Gość
jak sprawdzić czy enter jest linuksowy czy windowsowy, znak powrotu ka
« Odpowiedź #7 dnia: 2009-12-09, 23:12:41 »
Dzięki za poprawkę literówki: zapomniałem o maskowaniu w podpowiedzi na szybko.

Pisząc tego posta wydawało mi się, że i o znakach przekierowania zapomniałem (mimo wzmianki o nich), ale to nieprawda: w normalnym widoku wątku są widoczne, tylko tu, poniżej okna tworzenia posta - nie.

Jeszcze jedno: nie pisałem, że cat -v służy do konwersji...