Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: vmonkey 14 Října 2011, 17:53:25

Název: Pomoc se sedem/tr/awk...
Přispěvatel: vmonkey 14 Října 2011, 17:53:25
Ahoj,
vytvářím si skript pro tipovani.cz, ale nějak jsem se dostal k problému - Mám textový soubor http://ubuntuone.com/1u2j8uQN0HjmGP6Nezc0ZE a potřeboval bych se tam nějak zbavit speciálních znaků (ty | jsem tam vložil schválně). Původně jsem si myslel, že je to newline character \n, ovšem není. Tento znak vytváří také nové řádky, ale odstraňováním \n znaků se neodstraní. Samozřejmě že to můžu smazat ručně, ale chci to řešit skriptově...
Díky za odpověď.
Název: Re:Pomoc se sedem/tr/awk...
Přispěvatel: GdH 14 Října 2011, 19:22:26
To je znak pro carriage return, tedy pouze vrátí tisk na začátek řádku, bez posunu "papíru", tedy přechodu na další řádek. Značí se \r, takže výměna za new line (případně libovolný jiný znak) takto:

Kód: [Vybrat]
tr '\r' '\n'
Název: Re:Pomoc se sedem/tr/awk...
Přispěvatel: vmonkey 14 Října 2011, 19:38:49
Díky moc... Mimochodem jak jsi přišel na to, že to je zrovna to \r ? Jsem to nějak nemohl zjistit... Každopádně díky a K+:)
Název: Re:Pomoc se sedem/tr/awk...
Přispěvatel: GdH 14 Října 2011, 19:50:39
Mimochodem jak jsi přišel na to, že to je zrovna to \r ?

Jednoduše - stáhl jsem soubor, poslal na něj cat a viděl, protože BASH ten znak interpretuje správně a já o jeho existenci vím :)
Název: Re:Pomoc se sedem/tr/awk...
Přispěvatel: Kedrigern 14 Října 2011, 19:51:13
Bohužel kdysi dávno, když lidé byli stejně hloupí jako dneska převzali psací stroj do počítače. A z toho nám vznikly dva samostatné příkazy pro "plnohodnotné" začnutí nového řádku.
Newline (\n) a carrier return (\r). Některé systémy to převzali a používají oba (např. Windows) - ale ještě není shoda v jakém pořadí. Jiné systémy logicky vzali jen jeden. Linux chytře vzal newline, jelikož je to takové intuitivní. Z prapodivných důvodů Mac vzal pouze \r... více např. tady: http://en.wikipedia.org/wiki/Newline

Je to základní vědomost o operačních systémech, měla by být v každém úvodním kurzu.
Název: Re:Pomoc se sedem/tr/awk...
Přispěvatel: daysleeper 14 Října 2011, 20:09:26
A aby to nebylo moc jednoduché, tak různé multiplatformní formáty definují konec řádku různě, takže pokud např. pošlu email z mého poštovního klienta na Linuxu (třeba někomu jinému kdo má Linux), zpráva se pošle s řádky ukončenými po "Windowsovsku" (\r\n - viz rfc5322).