Portál AbcLinuxu, 25. dubna 2024 13:15


Dotaz: echo -e \n

9.2.2012 14:34 Novice99
echo -e \n
Přečteno: 438×
Odpovědět | Admin
Ahoj všem, pokouším se v shell scriptu zapsat data do txt souboru a potřeboval bych zapsat konec řádku. Zkoušel jsem různé varianty echo -e \n, nebo printf "\n" ale pořád se data zapisují na jeden řádek. Použil jsem přesměrování výstupu ./script > soubor.txt nebo jsem zkusil ve skriptu exec3>$soubor a pak jsem zapisoval echo "\n">&3 ale pořád se to nedaří.Jedná se o distribuci Debian Leny

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.2.2012 14:42 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: echo -e \n
Odpovědět | | Sbalit | Link | Blokovat | Admin
petr@nt:~$ echo > pokus.txt
petr@nt:~$ cat pokus.txt

petr@nt:~$ ls -l pokus.txt
-rw-rw-r-- 1 petr petr 1 2012-02-09 14:39 pokus.txt
petr@nt:~$
Pošli pouze echo do souboru se vloží znak konce řádku 0x0A.
9.2.2012 14:57 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: echo -e \n
petr@nt:~$ echo -n "Prvni text " > pokus.txt
petr@nt:~$ echo -n "pokracovani na stejnem radku...." >> pokus.txt
petr@nt:~$ echo >> pokus.txt
petr@nt:~$ echo -n "pokracovani na dalsim radku...." >> pokus.txt
petr@nt:~$ echo >> pokus.txt
petr@nt:~$ echo >> pokus.txt
petr@nt:~$ echo -n "a jeden řadek jsme přeskočily...." >> pokus.txt
petr@nt:~$ cat pokus.txt
Prvni text pokracovani na stejnem radku....
pokracovani na dalsim radku....

a jeden řadek jsme přeskočily....petr@nt:~$ 
9.2.2012 14:57 Novice99
Rozbalit Rozbalit vše Re: echo -e \n
Díky za tip, uz vím kde je problém, cat pokus.txt vypíše řádky správně, problém je že ten txt soubor potřebuju otevřít ve windows a notepad řádky ignoruje.PSpad otevře soubor správně. Nevíte co s tím nebo je to dotaz na jiné fórum, které se věnuje jinemu OS :-)
9.2.2012 15:07 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: echo -e \n
To že windows používají jiné konce řádku za to nemůžu :-)

Musíš poslat kody \n a \r co je 0x0A 0x0D v jakém pořadí to bude windows brát nevím zda \n\r nebo \r\n.
9.2.2012 21:55 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: echo -e \n

CRLF, tedy \r\n neboli 0x0d 0x0a.

Duvod je prosty: na mechanickych terminalech navrat voziku (tedy CR) trva delsi dobu, nez posun na novy radek. Takze se spusti navrat a nez se provede, tak uz se stihne provest i posun. Aspon tohle vysvetleni jsem nekde cetl :-)

Dejv

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
10.2.2012 09:36 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: echo -e \n
No na jiném OS (mám dojem že mac ?) je to právě obráceně jak u windows :-)

Prostě je v tom stejnej bordel jako kdysi v kodování češtiny v dosu.... :-)
Tarmaq avatar 10.2.2012 10:59 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: echo -e \n
DOS: CRLF
Linux/UNIX/Mac OS X: LF
Mac OS do verze 9: CR
Don't panic!
10.2.2012 11:04 l4m4
Rozbalit Rozbalit vše Re: echo -e \n
A to je jen špička ledovce...

9.2.2012 14:46 Kit
Rozbalit Rozbalit vše Re: echo -e \n
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo -e "prvni\ndruhy\n"
9.2.2012 14:51 l4m4
Rozbalit Rozbalit vše Re: echo -e \n
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo -e \n je totéž jako echo -e n. Když přidáš backslash nebo uvozovky, tak ovšem vypíše dva prázdné řádky, protože echo dělá konec řádku samo o sobě. Jeden konec řádku vypíše samotné echo.

printf "\n" vypíše prázdný řádek (i s koncem).

Přesměrování ./script >soubor funguje, to druhé pravděpodobně taky (pokud děláš, co vypadá, že děláš).

Takže nevidíš-li konce řádků, problém je nejspíš někde úplně jinde (třeba že se na unixový texťák díváš v microsoftím textovém editoru). Budeš sem muset dát kompletnější ukázku...
9.2.2012 14:59 Novice99
Rozbalit Rozbalit vše Re: echo -e \n
Ano, je to ten problém unixový texťák v mrkvosoftím editoru ....
Řešení 1× (Dreit)
9.2.2012 15:05 Novice99
Rozbalit Rozbalit vše Re: echo -e \n
Vyřešeno, použitím parametru \r\n Díky všem!
9.2.2012 15:06 l4m4
Rozbalit Rozbalit vše Re: echo -e \n
Tak to by asi řešil

./script | unix2dos >output.txt

pokud ho tedy současně nebudeš používat v Unixu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.