Portál AbcLinuxu, 14. května 2025 02:45

Dotaz: gawk: ^ invalid char '� in expression

19.1.2009 18:24 Begleiter | skóre: 47 | blog: muj_blog | Doma
gawk: ^ invalid char '� in expression
Přečteno: 337×
Odpovědět | Admin

Dobrý den,

učím se programovat s gawk, postupuju podle The GNU Awk User's Guide . Narazil jsem ale na problém (chybu), se kterou si nevím rady.

Když (z terminálu) spustím: awk '/foo/ { print $0 }' BBS-list , tak se mi dostane následujícího hlášení:

awk: /foo/ { print $0 } BBS-list
awk:        ^ invalid char '� in expression

Obsah souboru BBS-list je následujcí:

aardvark     555-5553     1200/300          B
alpo-net     555-3412     2400/1200/300     A
barfly       555-7685     1200/300          A
bites        555-1675     2400/1200/300     A
camelot      555-0542     300               C
core         555-2912     1200/300          C
fooey        555-1234     2400/1200/300     B
foot         555-6699     1200/300          B
macfoo       555-6480     1200/300          A
sdace        555-3430     2400/1200/300     A
sabafoo      555-2127     1200/300          C

Zajímavý je to, že když ten příkaz nenapíšu "ručně", ale zkopíruju ten příkaz např. z tý příručky (přes schránku), tak to funguje!

Mám Kubuntu x86_64 Hardy Heron (8.04), GNU Awk 3.1.6. K problému dochází v xtermu, v programu konsole i v programu terminal, rovněž i v "čistém příkazovém řádku".

Za jakoukoli radu, jak problém vyřešit, budu vděčný.

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

Odpovědi

19.1.2009 18:33 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zajímavý je to, že když ten příkaz nenapíšu "ručně", ale zkopíruju ten příkaz např. z tý příručky (přes schránku), tak to funguje!
Tipnul bych si, že tam není normální mezera, ale dostala se tam nějaká jiná (pevná atp.), protože jste při stisku mezerníku držel nějaký přeřaďovač.
I am always ready to learn although I do not always like to be taught. (W. Churchill)
19.1.2009 18:41 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression

Akorát přepínám mezi českou a anglickou klávesnicí, abych mohl napsat '{', resp. '}'.

Mám v xorg.conf toto:

Option          "XkbLayout"     "cz,us"
Option          "XkbOptions"    "grp:alt_shift_toggle,eurosign:e"
19.1.2009 19:12 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ještě jeden poznatek (možná nesouvisí s tímto problémem): Když se kombinací Alt+Shift přepnu na anglickou klávesnici, tak mi nefunguje potom v terminálu doplňování pomocí Tab. A navíc, když např. zadám ls -al, tak to skončí s chybou:

bash: ls -al: command not found
19.1.2009 19:25 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
možná nesouvisí s tímto problémem

Souvisí, tady asi není problém s AWKem, ale s klávesnicí, která zřejmě nedokáže vygenerovat normální mezeru (proto si shell myslí, že ls -al je jediný příkaz a ne příkaz a parametr).

Otázka je - takhle se to chová jenom v terminálech nebo ve všech programech - pokud napíšete ten příkaz v nějakém GUI editoru a pak jej překopírujete, tak to funguje nebo to hlásí chybu?

Zkusil bych se podívat na nastavení klávesnice v KDE, jestli je vybrán správný model (ale rovnou říkám, že vařím z vody). BTW - ten xorg.conf se mi jeví ok.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
19.1.2009 19:46 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression

Děkuju.

Napsal jsem toto v GUI editoru Kate:

#!/bin/bash
awk '/foo/ { print $0 }' /home/rotor/tmp/gawk/BBS-list

Skončí to s chybou (uložil jsem si to jako gawk.sh a nastavil, že gawk.sh je spustitelý):

./gawk.sh: line 2: awk /foo/ { print $0 } /home/rotor/tmp/gawk/BBS-list: No such file or directory

Jenom poznámka: Jak jsem říkal, že to funguje, když ten příkaz zkopíruju do schránky a potom vložím do terminálu, tak to funguje z Firefoxu, nikoli z Kate!

Druhá poznámka: Soubor /home/rotor/tmp/gawk/BBS-list opravdu existuje. Ověřil jsem si to.
 

19.1.2009 19:50 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression

Když to zkopíruju (ten příkaz) do schránky z Kate, tak to hodí to No such file or directory (viz výše).

19.1.2009 19:53 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
Jenom poznámka: Jak jsem říkal, že to funguje, když ten příkaz zkopíruju do schránky a potom vložím do terminálu, tak to funguje z Firefoxu, nikoli z Kate!

Já jsem myslel, jestli když to napíšete vy, tak jestli záleží, v kterém programu to napíšete.

Tak to vypadá skutečně na problém s interpretováním vstupu z klávesnice - děje se to pouze s českým nebo i s anglickým rozložením? Děje se to pouze vám nebo to pod jiným uživatelem funguje?

I am always ready to learn although I do not always like to be taught. (W. Churchill)
19.1.2009 20:17 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression

"Já jsem myslel, jestli když to napíšete vy, tak jestli záleží, v kterém programu to napíšete."

Záleží. Protože, když to napíšu v Kate a zkopíruju to do schránky, tak to hodí:

bash: awk /foo/ { print $0 } /home/rotor/tmp/gawk/BBS-list: No such file or directory

Zatímco, když to napíšu ve Firefoxu (a zkopíruju do schránky, potom vložím do terminálu), tak k žádné chybě nedojde!

Děje se to jenom při anglickém rozložení klávesnice. (Vyzkoušel jsem to tak, že jsem pomocí anglické klávesnice napsal jenonom '{', resp. '}', všechno ostatní jsem napsal pomocí české klávesnice -- v Kate. Když jsem to napsal celé při anglickém rozložení klávesnice, tak to nefungovalo.)

Ještě poznámka: Když se přepnu na aglickou klávesnici, tak se mi v editoru Vim místo "klasické mezery" zobrazuje | .

Ještě teda vyzkouším, zda to taky dělá i pod jiným uživatelem.

19.1.2009 20:24 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression

Takže stejný problém je i pod jiným uživatelem.

19.1.2009 20:32 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
Odpovědět | | Sbalit | Link | Blokovat | Admin

Vyřešeno.

Nastavení systému --> Místní zvyklosti a jazyk --> Rozvržení klávesnice: Zaškrtnout Povolit rozložení klávesnice. + Ještě provést dodatečné nastavení (dle libosti).

19.1.2009 20:36 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression

Jedná se samozřejmě o nastavení KDE (mám Kubuntu), nikoli Gnome!

19.1.2009 20:34 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
Odpovědět | | Sbalit | Link | Blokovat | Admin

Děkuju moc panu Horkému za ochotu pomoct. :-)

19.1.2009 21:43 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: gawk: ^ invalid char '� in expression
Není zač.
I am always ready to learn although I do not always like to be taught. (W. Churchill)

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.