Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Pomoc se sedem/tr/awk...  (Přečteno 1325 krát)

vmonkey

  • Aktivní člen
  • *
  • Příspěvků: 230
Pomoc se sedem/tr/awk...
« kdy: 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ěď.
Ubuntu 14.04, Acer Aspire v15 Nitro Black

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Pomoc se sedem/tr/awk...
« Odpověď #1 kdy: 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'
« Poslední změna: 14 Října 2011, 20:04:37 od GdH »

vmonkey

  • Aktivní člen
  • *
  • Příspěvků: 230
Re:Pomoc se sedem/tr/awk...
« Odpověď #2 kdy: 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+:)
Ubuntu 14.04, Acer Aspire v15 Nitro Black

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Pomoc se sedem/tr/awk...
« Odpověď #3 kdy: 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 :)

Kedrigern

Re:Pomoc se sedem/tr/awk...
« Odpověď #4 kdy: 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.

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Pomoc se sedem/tr/awk...
« Odpověď #5 kdy: 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).

 

Provoz zaštiťuje spolek OpenAlt.