Portál AbcLinuxu, 6. května 2025 09:13

Dotaz: BASH - úprava seznamu aktivních virtuálů

15.8.2011 22:21 Honza
BASH - úprava seznamu aktivních virtuálů
Přečteno: 343×
Odpovědět | Admin
Dobrý večer,

potřeboval bych poradit s lamerským problémem. Na virtualizačním serveru centOS6/64 běží KVM, protože jsem dřív používal VirtualBox udělal jsem si na něj v BASH takovej skript abych nemusel volat VBoxManage ručně a teď ten skript předělávám pro KVM kde se pracuje s virsh.

Problém je v tom že potřebuji nějakým způsobem "vysekat" údaje (název) o tom který virtuál běží a dále s tím názvem pracovat např.:

virsh -c qemu:///system list

vypíše:
 Id Jméno                Stav
----------------------------------
  1 test                  běží
  2 xp      	          běží
  3 vm-w7-64              běží
 13 ubuntu                běží
virsh -c qemu:///system list | grep "běží"

vypíše:
  1 test                  běží
  2 xp      	          běží
  3 vm-w7-64              běží
 13 ubuntu                běží
a já potřebuji z tohoto seznamu dostat jen ty názvy virtuálů, něco jako:

virsh -c qemu:///system list | grep "běží" | cut -d" " -f4

jenže to vypíše jen:
test
xp
vm-w7-64
a už ne ten poslední protože má ID dvoumístné a oddělovač cut je mezera -> tím se posune číslování sloupců a poslední virtuál je tak pod f3. Pokud by někdo znal lepší způsob jak vypreparovat seznam pouze jmen běžících virtuálu byl bych vděčný.

Děkuji

Řešení dotazu:


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

Odpovědi

Řešení 1× (MaFy)
15.8.2011 22:26 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Miesto

cut -d" " -f4

použi

awk '{print $2}'
15.8.2011 22:53 Honza
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů

jejiž ja jsem kretén, na awk sem úplně zapomněl... :-D

 

Díky moc všem a topick můžem uzavřít

15.8.2011 22:29 pepazdepa
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo '13 ubuntu blabla blablabla kokoX' | awk '{ print $2 }'
15.8.2011 22:50 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Výpis druhého sloupce:

virsh -c qemu:///system list | grep "běží" | awk '{print $2;}'
15.8.2011 22:51 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
Hmm, někdy je lepší před odpovědí reloadnout :-)
15.8.2011 22:57 Honza
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů

nevadí i tak děkuji měl sem nějaky zatmění hemisfery nebo co, pač to akw je uplně geni(t)ální :-) a není tam potřeba nic vymejšlet.

Ještě jednou díky a sorry za lame question...

15.8.2011 23:00 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ahoj

Dalsi mozna varianta je pred cut vsechny vicenasobne mezery nahradit jednou mezerou pomoci

sed -r 's/ +/ /g'
A samozrejme upravit cut:
cut -d " " -f 3
Takze vysledek:
[workspace]$ cat kvm.txt
 Id Jméno                Stav
----------------------------------
  1 test                  běží
  2 xp                    běží
  3 vm-w7-64              běží
 13 ubuntu                běží
[workspace]$ cat kvm.txt |grep "běží" | sed -r 's/ +/ /g' | cut -d " " -f 3
test
xp
vm-w7-64
ubuntu

Dejv

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
15.8.2011 23:15 Honza
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
děkuji ;-)
16.8.2011 10:25 marek
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
Dobry den

sed to umi i bez grep a cut:

$ echo ' Id Jméno                Stav
----------------------------------
  1 test                  běží
  2 xp                běží
  3 vm-w7-64              běží
 13 ubuntu                běží' | sed -e's/[[:blank:]]*[0-9]\+[[:blank:]]\([^[:blank:]]\+\)[[:blank:]]\+běží/\1/p;d'
test
xp
vm-w7-64
ubuntu
$
Marek
16.8.2011 14:21 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: BASH - úprava seznamu aktivních virtuálů
sed -r 's/ +/ /g'

Na tohle stačí "tr -s ' '". Když už se rozhodnete pro sed, je jednodušší to v něm udělat celé:

  sed -nre '/běží/ { s/[[:space:]]+[0-9]+[[:space:]]+([^[:space:]]+)[[:space:]].*/\1/ ; p }'

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.