Portál AbcLinuxu, 8. května 2025 06:54

Dotaz: Bash - Sed

9.1.2011 22:13 Johanius
Bash - Sed
Přečteno: 710×
Odpovědět | Admin
Dobry den, v premennej i mam retazec v tvare Obr"znak s dlznom vo windows kodovani"zek a chcem do premennej j vlozit retazec v tvare Obrzek. Neviem preco nefunguje nasledujuce:

j = `echo $i | sed -e 's/Obr./Obr/'`


Ř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

jose17 avatar 9.1.2011 22:31 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Bash - Sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
zrejme ma sed problem s tym cp1250 enkodovanim. co takto echo "$i" | iconv -f cp1250 -t utf-8 | sed ..
Ja vim, on vi, ty nano!
9.1.2011 22:35 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash - Sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pravděpodobně proto, že kód reprezentující znak "á" we Windows-1250 neodpovídá korektnímu znaku v UTF-8. Zkuste tam před sed vložit 'iconv -f windows-1250 -t utf-8'.
9.1.2011 23:37 Johanius
Rozbalit Rozbalit vše Re: Bash - Sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dakujem, vobec som netusil o iconv.
10.1.2011 10:27 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Bash - Sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim,

ako je jasne, sed s tym problem mal, vid:
pato@debian:~$ PATO=Obrázek
pato@debian:~$ PATO="$(echo "$PATO" | iconv -f utf-8 -t cp1250)"
pato@debian:~$ echo "$PATO"
Obr�ek
pato@debian:~$ echo "${PATO}" | sed 's/Obr./Obr/'
Obr�ek
no uz nahradzovanie casti hodnoti premennej priamo v bash uz zjavne nie:
pato@debian:~$ echo "${PATO/Obr?/Obr}"
Obrzek
A bolo by istotne rychlejsie ako volat iconv a sed. Aspon pri takto jednoduchom nahradzovani je sed zbytocny, podla mojho nazoru.
10.1.2011 14:25 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash - Sed

Jestli dobře chápu, o co se tazatel snaží, tak řešením by mohlo být např.

  g=`echo $f | LC_ALL=C tr -cd [[:graph:]]`
10.1.2011 14:31 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash - Sed
Nebo (možná praktičtější)
  g=`echo -n "$f" | LC_ALL=C tr -c [[:graph:]] _`

(ty uvozovky kolem $f měly samozřejmě být i v minulém příspěvku).

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.