Vajíčková mánie Vajíčková mánie
Od 15. do 21.4. slevy 20 až 80% v sekci C/C++. Když ne teď, tak kdy?
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: awk - sestavení programu

Aktivity (1)
Avatar
Tereza Burbová:5. února 10:25

Dobrý den, mám do v awku 3 příkazy:

-F[/.] {for(i=1;i<=NF;i++){if($i=="Hello"){print "#"$(i+1)}}}

BEGIN{flag=""} /end/{flag=1;next} !/end/ && /[a-zA-Z]+/{flag=""} flag{print $2}

BEGIN { CONVFMT="%0.17f" }
function t(n, s) {
s=index(n,".")
return (s? substr(n,1,s+4) : n)
}
/end/ || x==1 { if(x==1) print t($1-2400000),t(-2.5*log($2)/log(10)) ; x=1 }

Jak je spojit dohromady prosím?

Input:

gfkjl
dfjldfg
Hello/word
klji
c end
2.456924717385000084e+06 8.305102180161216529e+04 1.356000000000000050e+01
2.456924717654999811e+06 8.287982785722288827e+04 1.383000000000000007e+01

Požadovaný výstup:

#word
56924.7173 -12.2983
56924.7176 -12.2961

Moc děkuji

Zkusil jsem: Zkoušela jsem něco takového:

BEGIN { CONVFMT="%0.17f" }
-F[/.] {for(i=1;i<=NF;i++){if($i=="Hello"){print "#"$(i+1)}}}
function t(n, s) {
s=index(n,".")
return (s? substr(n,1,s+4) : n)
}
/end/ || x==1 {flag=""} /end/{flag=1;next} !/end/ && /[a-zA-Z]+/{flag=""} flag{ if(x==1) print t($1-2400000),t(-2.5*log($2)/log(10)) ; x=1 }

ale nefunguje to.

Chci docílit:
Chtěla bych na první řádek výstupního souboru napsat

-F[/.] {for(i=1;i<=NF;i++){if($i=="Hello"){print "#"$(i+1)}}}

Pak se přesunout na řádku pod slovem end

BEGIN{flag=""} /end/{flag=1;next} !/end/ && /[a-zA-Z]+/{flag=""} flag{print z dalšího}

a tam udělat

BEGIN { CONVFMT="%0.17f" }
function t(n, s) {
s=index(n,".")
return (s? substr(n,1,s+4) : n)
}
/end/ || x==1 { if(x==1) print t($1-2400000),t(-2.5*log($2)/log(10)) ; x=1 }
 
Odpovědět 5. února 10:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.