Portál AbcLinuxu, 12. května 2025 17:55

Dotaz: spuštění shellového příkazu v awk

7.2.2007 16:17 Terka | skóre: 13
spuštění shellového příkazu v awk
Přečteno: 225×
Odpovědět | Admin
chci v awk použít příkaz shellu, např.
awk ' BEGIN{delka_souboru=`cat file|wc -l`}  <--- chci priradit vysledek prikazu promenne
      {print NR". radek z "delka_souboru}       
    '
nemuzu prijit na spravnou syntaxi
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.2.2007 16:29 iSteve
Rozbalit Rozbalit vše Re: spuštění shellového příkazu v awk
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk 'BEGIN { "echo asd" | getline testvar; print testvar; }'
7.2.2007 17:02 ..... | skóre: 18 | Pardubice
Rozbalit Rozbalit vše Re: spuštění shellového příkazu v awk
Odpovědět | | Sbalit | Link | Blokovat | Admin

Když jde jen o předání hodnoty, tak je lepší použít parametr -v:

awk -v "delka=`cat file|wc-l`" ...

A pokud se má o spuštění programu postarat až samotné awk, tak třeba takhle:

awk 'BEGIN { "cat file|wc -l" | getline delka } ...'

Jde to i s úpravou skriptu pro awk (viz QUOTING v man bash). Pokud by výstupem nebylo jen číslo, ale obecný text, tak je to ještě veselejší.

awk 'BEGIN { delka='`cat file|wc-l`' } ...'

Mimochodem pro kratší vstupy si stačí v awk uložit řádky do pole a spočítat a pak je zpracovat až v END. To se hodí obzvlášť v případě, kdy má awk zpracovávat výstup z roury.

8.2.2007 15:57 Terka | skóre: 13
Rozbalit Rozbalit vše Re: spuštění shellového příkazu v awk
dik, funguje. zkusim jeste neco a popripade se ozvu ahoj T.

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.