Portál AbcLinuxu, 27. dubna 2024 04:10


Dotaz: Bash - grep z prikazoveho radku

23.12.2008 14:39 Pheek | skóre: 24 | blog: io
Bash - grep z prikazoveho radku
Přečteno: 1154×
Odpovědět | Admin
Dobry den, mam dotaz, jak mam udelat v Bash grep z vypisu programu, potreboval bych zjistit state na prvnim radku ale nejak se mi nedari, pokousel jsem s pomoci jmeno_programu | grep -i state. Tohle je vypis programu:
ioc0 vol_id 0 type IM, 2 phy, 136 GB, state OPTIMAL, flags ENABLED
ioc0 phy 0 scsi_id 0 FUJITSU  MAP3147NC        0108, 136 GB, state ONLINE, flags NONE
ioc0 phy 1 scsi_id 1 SEAGATE  ST3146707LC      0002, 136 GB, state ONLINE, flags NONE
Kdyz si udelam to ze si to co program vypise ulozim do nejakeho souboru tak stim dokazu udelat to co chci, ale v realnem case bez ukladani do nejakeho souboru ne! Pomuze mi nekdo prosim?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.12.2008 14:41 Pheek | skóre: 24 | blog: io
Rozbalit Rozbalit vše Re: Bash - grep z prikazoveho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ted kdyz to po sobe ctu tak jsem se spatne vyjadril, potreboval bych udelat to abych si za state dosail nejakou promenou a kdyz zadal jmeno_programu tak mi vypise tohle a ja si z toho vytahl jen state a porovnal ho stim jeslti ukazuje OPTIMAL tak je vse vporadku a pokud to tam nebude tak at se stane neco co si nastavim. Omlouvam se za spatne polozeny dotaz.
23.12.2008 14:50 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash - grep z prikazoveho radku

Jestli to chápu správně, tak potřebujete z toho výpisu vyfiltroval jedinou řádku a na ní zjistit, jestli je state OPTIMAL. Pak by mělo stačit tohle:

identif='identifikace_radky';
if program-z-ktereho-to-leze | grep "$identif" | grep 'state OPTIMAL' -q; then
   echo "$identif not optimal...";
fi

Stačil by i jediný grep a obsah $identif by neměl být moc divoký.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
23.12.2008 14:59 Pheek | skóre: 24 | blog: io
Rozbalit Rozbalit vše Re: Bash - grep z prikazoveho radku
Ano to je ono, moc dekuji, nejak jsem si stim nevedel rady.
23.12.2008 15:59 Pheek | skóre: 24 | blog: io
Rozbalit Rozbalit vše Re: Bash - grep z prikazoveho radku
Takze tohle nefunguje, nasimuloval jsem si pripad ze disk odejde a za "state OPTIMAL" se dostadi "state DEGRADED" a ten script nefunguje, tvari se jako by se bylo ok.
23.12.2008 17:12 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash - grep z prikazoveho radku

Co tohle?

identif='identifikace_radky';
status=`program-z-ktereho-to-leze | sed -n 's/.*state \([a-zA-Z]*\).*/\1/p'`;
# popř. ještě | tr a-z A-Z
if [ "$status" = "OPTIMAL" ]; then
   echo "$identif not optimal..";
fi
I am always ready to learn although I do not always like to be taught. (W. Churchill)
David Watzke avatar 23.12.2008 15:07 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash - grep z prikazoveho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na to nepotřebujete grep. Tohle je trochu prasárna, ale pro to co chcete by to mělo bejt jedno z nejrychlejších řešení:
unset x p
for x in $( command ); do
	if [[ "$p" == "state" ]]; then
		echo ${x%,}
		break
	fi
	p=$x
done
Za "command" je třeba dosadit příkaz, kterej vrací vámi uvedený výstup.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

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.