2011-01-10 2 views
0

Ich versuche, eine grep/sed/awk für eine Bedingung aus einer Datei zu schreiben, und gleichzeitig mit einer negativen Bedingung (enthält nicht xxx) und Ich möchte auch alle Zeilen grep, die> als eine bestimmte Zeilennummer sind.Grep mit negativer Bedingung, und mehr als eine bestimmte Zeilennummer

+0

Erlauben Sie mir, Sie zu Stackoverflow zu begrüßen und Ihnen drei Dinge erinnern wir tun in der Regel hier: 1) Wie Sie Hilfe bekommen, versuchen Sie es geben ** Fragen ** in Ihrem Fachgebiet 2) zu beantworten [ ' Lesen Sie die FAQ! '] (Http://stackoverflow.com/faq) 3) Wenn Sie gute Fragen und Antworten sehen, laden Sie sie hoch (" Verwenden der grauen Dreiecke ") (http://i.imgur.com/kygEP .png), da die Glaubwürdigkeit des Systems auf der Reputation beruht, die Benutzer durch die Weitergabe ihres Wissens erhalten. Denken Sie auch daran, die Antwort zu akzeptieren, die Ihr Problem, falls vorhanden, besser löst ['indem Sie das Häkchenzeichen drücken] (http://i.imgur.com/uqJeW.png) –

Antwort

1

Awk sollte mit diesem gut umgehen:

/condition/ && ! /negative condition/ { print $0; outputdone = 1 } 

{ if(NR > certain_line_number && !outputdone) print $0 
    outputdone = 0 
} 

ich nicht ganz sicher war, ob alle Bedingungen zusammen angewendet wurden. Ich vermutete, dass Sie immer Linien über irgendeinen Punkt hinaus drucken wollen, aber bis zu diesem Punkt gelten die positiven und negativen Bedingungen.

+0

danke! das funktioniert – Templar

+0

Du könntest das auf 'awk' verkürzen (/ condition/&&!/negativer Zustand /) || NR> bestimmte_Zeilennummer) ''. Du könntest immer noch deine 'outputdone'-Flagge hinzufügen, aber ich verstehe nicht, warum man das brauchen sollte. – mschilli

0
tail -<number of lines that you want from end of file> filename | grep -v xxx 
+0

das ist netter aber funktioniert nicht für mich cos Ich speichere die letzte Zeile, die ich lese und die Datei wächst weiter, so technisch würde ich nicht die Anzahl der Zeilen, die ich lesen müssen – Templar

+0

Dies beinhaltet auch nicht die (positive) Bedingung, die vom OP angefordert wurde. – mschilli