Nejste přihlášen/a.

Přihlásit se do poradny

 

Awk - syntax error

Od: elisa24® odpovědí: 24 změna:
avatar elisa24

Dobrý den, co je tady prosím za chybu? Děkuji


Awk - syntax error
Awk - syntax error #2

 

 

24 odpovědí na otázku
Řazeno dle hodnocení

 

 

hm*
hodnocení

2x

Určitě má být "0$}" a ne třeba "$0}"?

hodnocení

No jo, děkuji a ještě prosím, jaký je rozdíl ve formátu stringu %6s a %-6s. To druhé znamená, že je pro to 6 "mezer nebo políček". V tom prvním je nějaký rozdíl?

hodnocení

Nebo tady prosím?

Awk - syntax error #3
Awk - syntax error #4
lmgify

minus = zarovnat doleva ve sloupci

Gawk manual: Modifiers for pri/...

hodnocení

Děkuji a proč mi to tam prosím nefunguje?

lmgify

Těžko říct, když nikde ve svém programu mínus nemáš a zaslaný výstup neodpovídá programu.

hodnocení

Minus jsem nepoužila, takže bych čekala, že by to mělo být zarovnané vpravo. To první je program, který jsem opsala (snad) z posledního obrázku, pak je terminál, kde je výstup, který neodpovídá tomu podle té knížky.

lmgify

Asi je něco špatně v tom souboru countries. Máš tam tabelátory hned za hodnotami? Žádné vyplňující mezery? Odkud jsou ty nuly na konci?

lmgify

Pošli sem screenshot:

od -Ad -N128 -w16 -tc1 countries

hodnocení

Tohle je input, mezery na konci nejsou. Oddělovala jsem tabulátory, ale to se pak změnilo na mezery.

Awk - syntax error #5
lmgify

Pošli sem ten výstup: od -A n -N 128 -t c1 countries

Když tam v editory vložíš tabulátory, tak tam budou tabulátory. Jen pokud máš v editoru zapnuto "nahrazovat tabulátory mezerami", změní se na mezery.

Bez tabulátorů to nebude fungovat, protože program nedokáže rozlišit začátky a konce políček (řetězců).

lmgify

To je nějaký virtualizovaný Linux (Ubuntu?) běžící ve Windows?

"od" je běžný příkaz na unixových systémech (stejně jako awk).

lmgify

program nedokáže rozlišit začátky a konce políček (řetězců)

Proto taky máš hned na začátku programu: FS = zpětné_lomítko t (neboli Field Separator (oddělovač políček) je tabulátor)

hodnocení

Děkuji, už to funguje (měla jsem tam nastavené ty tabulátory, že se předělávají na mezery). Jak jste mi říkala, ať sem poštu co dá to od ..., tak jak se to zadání do terminálu? Ještě něco před to? Jak se píšou kódy do toho rámečku? Ano je to virtualizovaný Linux.

lmgify

jak se to zadání do terminálu?

Je to normální příkaz. Místo: awk -f awk_test countries napíšeš ten můj příkaz.

Jak se píšou kódy do toho rámečku?

Jaké kódy do jakého rámečku? Tím rámečkem myslíš to šedivé? To už je terminál (konzole) Linuxu. To je hlavní obrazovka Linuxu, kde se zadávají všechny příkazy. Obdoba CMD okna ve Windows.

Těmi kódy myslíš příkazy?

GNU Awk existuje i přímo ve verzi pro Windows, takže nemusíš spouštět virtuální Linux.

Stejně tak existuje Windows verze příkazu "od"(86KB). Je v ZIPu s ostatními příkazy Coreutils. Vybal jen ten "od"("zip -x bin/od.exe") nebo nějaký grafický klikací unzipper.

hodnocení

1. obr. Nejde mi to tam napsat, něco dělám špatně.

2. obr. Myslela jsem, tak se tady na poradte píše v tomhle formátu?

Děkuji za odkazy.

Awk - syntax error #6
Awk - syntax error #7
lmgify

Aha, moje chyba. Má být "-t c" (bez té jedničky).

hodnocení

Děkuji, užitečný příkaz a co prosím to znamená jednotlivě? Nevím, pod čím to na google hledat.

Awk - syntax error #8
lmgify

/t ... znak tabulátoru (na poradně nefunguje zobrazování zpětných lomítek)

/n ... znak pro odskok na nový řádek

prázdné místo ... mezera

Vysvětlení kódů se zpětným lomítkem.


Hned je vidět, že za USSR a USA máš 2 tabulátory, takže druhé políčko (mezi prvním a druhým tabulátorem) je v tomto případě prázdné (nedefinované) a asi ti nebude fungovat ten sčítací program ze začátku.

Vysvětlení parametrů od.

lmgify

Můžeš také zkusit: "... -t az"

Budou se ti ukazovat i pojmenované netisknutelné (řídící) znaky nebo jejich ASCII hodnota.

 

lmgify

Jak se píše ten bílý příkaz: vložíš ho mezi elementy pre nebo code. Ten bílý je s code. Nepoužívej je. Už zde nejsou podporované (dříve byly).

hodnocení

Takže to od zobrazí soubor v určitém formátu?

To -A zajišťuje vypsání

c - dá to do tabulky

128 je nějaká velikost bytů - když to nastavím větší (256), tak je v tabulce všechno

-N ty byty čte

n, azc?

Vůbec si nedokážu představit, co to přesně znamená?

To code tu podporované stále je, když tu funguje?

lmgify

Přesné vysvětlení všech parametrů od je v mém odkazu z 20:00.

od ... octal dump (v podstatě hexdump s názvem z dob, kdy dělení po 3 bitech a ne po 4 bylo běžnou praxí)

A ... adresa; ukazuje pořadí zobrazeného byte v souboru (zde n = none = adresa se nezobrazuje, protože není důležitá)

N ... přečte jen N bytů ze souboru

t ... formát zobrazených bytů (zde "c", tedy characters = tisknutelné znaky)

atd.

Program ti umožňuje vidět na obrazovce hodnoty všech bytů v souboru. Normálně by ovladač obrazovky interpretoval všechny bajty a třeba pro čistě binární datové soubory by vylézaly úplné nesmysly.

Schválně se podívej, co obsahuje "exe" soubor awk.

Porovnej:

cat awk

a

od -A d -t x1z |more

Ten cat pravděpodobně rozhodí tvoji obrazovku, protože ovladač se značí zobrazit každý bajt, jako by to byl tisknutelný znak.


Zmínka o možnosti code a pre byla odstraněna z FAQ. Funkčnost tedy považuji za nezaručenou a nedoporučovanou.

hodnocení

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]