Portál AbcLinuxu, 12. května 2025 07:08

Dotaz: Skript s AWK.

6.8.2007 15:08 OgO
Skript s AWK.
Přečteno: 569×
Odpovědět | Admin
Ahoj, chtel bych pozadat o radu se skriptem ktery by mel z tohoto:

H/W path           Device     Class       Description
=====================================================
/0/100/1f.1/0/0    /dev/hda   disk        LTN526S
/0/100/1f.1/1/0    /dev/hdc   disk        3079MB QUANTUM FIREBALL EX3.2A
/0/100/1f.1/1/1    /dev/hdd   disk        18GB WDC WD200BB-00AUA1
Toto:

/dev/hda LTN526S
/dev/hdc 3079MB QUANTUM FIREBALL EX3.2A
/dev/hdd 18GB WDC WD200BB-00AUA1
Zatim jsem se dostal az sem:

lshw -short -C disk |grep -v ^H|grep -v ^=|awk '{print "\t" ;for (i=2;i<=NF;i++) printf (" %s", $i) }'

Coz mi vrati toto:

/dev/hda disk LTN526S
/dev/hdc disk 3079MB QUANTUM FIREBALL EX3.2A
/dev/hdd disk 18GB WDC WD200BB-00AUA1
Dal si bohuzel nevim rady potreboval bych jeste z vypisu vyhodit sloupec disk.

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

Odpovědi

6.8.2007 15:52 knizmi | skóre: 27 | blog: Blog | Kosmonosy
Rozbalit Rozbalit vše Re: Skript s AWK.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Strilim od boku, nemam tu ted pocitac s linuxem, ale nestacilo by proste | grep disk | awk '{$2 $4}' ?
6.8.2007 15:57 OgO
Rozbalit Rozbalit vše Re: Skript s AWK.
Bohuzel nestacilo. Kazdy radek ma totiz jiny pocet sloupcu a ja potrebuji vypsat vsechny sloupce od ctrvteho az do posledniho pro kazdy radek.
jose17 avatar 6.8.2007 16:03 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Skript s AWK.
Odpovědět | | Sbalit | Link | Blokovat | Admin
lshw -short -C disk | sed -e '1,2d' -e "s/^[^ ]* *\([^ ]*\) *disk *\(.*$\)/\1\t\2/"
takto?
Ja vim, on vi, ty nano!
6.8.2007 16:08 OgO
Rozbalit Rozbalit vše Re: Skript s AWK.
To by fungovalo. Jen bych potreboval aby to na zacatek kazde radky hodilo tabulator.

Nejvetsi smule je, ze je mi to srozumitelne asi jako svahilstina. :(

Diky moc, jdu studovat dokumentaci sedu.
jose17 avatar 6.8.2007 16:20 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Skript s AWK.
keď už uprednostňujete to awk:
..| awk -F"  +" '{if (FNR>2) {print "\t" $2 "\t" $4}}'
Ja vim, on vi, ty nano!
jose17 avatar 6.8.2007 16:41 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Skript s AWK.
ešte malá úprava
| awk -F"  +" 'FNR>2{print "\t" $2 "\t" $4}'
Ja vim, on vi, ty nano!
6.8.2007 16:24 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Skript s AWK.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dost blbě se to testuje na sucho. Ale tohle
#!/usr/bin/python
test = '''\
H/W path           Device     Class       Description
=====================================================
/0/100/1f.1/0/0    /dev/hda   disk        LTN526S
/0/100/1f.1/1/0    /dev/hdc   disk        3079MB QUANTUM FIREBALL EX3.2A
/0/100/1f.1/1/1    /dev/hdd   disk        18GB WDC WD200BB-00AUA1'''

for line in test.split('\n'):
    spl = line.strip().split(None, 3)
    if '0' in spl[0]:
        print spl[1], spl[3]
mi vyhodí tohle:
/dev/hda LTN526S
/dev/hdc 3079MB QUANTUM FIREBALL EX3.2A
/dev/hdd 18GB WDC WD200BB-00AUA1
Dej vědět, jestli trváš na awku.
6.8.2007 21:09 OgO
Rozbalit Rozbalit vše Re: Skript s AWK.
Na awku netrvam :) Potrebuji se stejne tak naucit i jine cesty zpracovani textu :)

jen potrebuji aby byl pred kazdy radek vrazen tabulator.

Diky moc za odpoved.
6.8.2007 23:00 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Skript s AWK.
Eleganci awku pro tuto situaci zcela uznávám. Nicméně můžeš zkusit i tohle:
#!/usr/bin/python
import os
cmd = ['lshw', '-short', '-C', 'disk']
w, r = os.popen2(cmd)
for line in r:
    spl = line.strip().split(None, 3)
    try:
        if spl[2] == 'disk':
            print '\t' + spl[1] + '\t' + spl[3]
    except IndexError:
        pass
Raději jsem neriskoval s modulem subprocess, protože jak vidím velikosti tvých disků, python >= 2.4 asi nemáš, že? ;-). Nicméně [Jooky] (viz níže) psal, že by se dal použít XML výstup, což by jistě pro parsování bylo lepší. Kdyžtak se ozvi na jabber, tady je domluva trochu těžkopádná.
6.8.2007 22:15 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
Rozbalit Rozbalit vše Re: Skript s AWK.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebo by lepsie pouzit xml vystup a z toho to povyberat ?
7.8.2007 02:10 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Skript s AWK.
Odpovědět | | Sbalit | Link | Blokovat | Admin
lshw -short -C disk | grep -v '\(^H/W\|^===\)' |while read a b c d; do echo "$b $d"; done
s tabelatorom:
lshw -short -C disk | grep -v '\(^H/W\|^===\)' |while read a b c d; do echo -e "\t$b $d"; done
If you hold a Unix shell up to your ear, you can you hear the C.

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.