Boris Hoeffgen: > Hallo, > > ich bekomme von einem Kommando folgenden Output: > ---------------------------------------------------------------------- > Device #0 > Device is a Hard drive > State : Online > -- > FRU : None > S.M.A.R.T. : No > S.M.A.R.T. warnings : 0 > Power State : Full rpm > Supported Power States : Full rpm,Powered off > -- > NCQ status : Enabled > Device #1 > Device is a Hard drive > State : Ready > -- > FRU : None > S.M.A.R.T. : No > S.M.A.R.T. warnings : 400 > Power State : Full rpm > Supported Power States : Full rpm,Powered off > > Diese Ausgabe möchte ich filtern, sodass nur noch > State : Online > S.M.A.R.T. warnings : 0 > State : Ready > S.M.A.R.T. warnings : 400 > > übrig bleibt und dann möchte ich die Werte der vier Zeilen auswerten. > Wie mache ich das am besten? Ungetestet: kommando | \ sed -e 's#^ *##' | \ grep -e "^S\.M\.A\.R\.T\. warrnings" -e "^State" Also erst mit sed Leerzeichen am Anfang der Zeile entfernen und dann die entsprechenden Zeilen mit grep rausfiltern. Habe auch erst spät gelernt, dass man grep beliebig viele Patterns per -e mitgeben kann, von denen nur eins zutreffen muss. Oft schönder als 'grep -E "(A|B|C)"'. Ja, nur mit awk/perl/python/tcl/bash ginge das sicher auch. :) J. -- If all my friends had Playstations I would buy a Nintendo to prove my individuality. [Agree] [Disagree] <http://www.slowlydownward.com/NODATA/data_enter2.html>
Attachment:
signature.asc
Description: Digital signature