grep-Ausgabeoption „beginnen“

grep-Ausgabeoption „beginnen“

Gibt es eine Option, die Ausgabe von grep abzurufen, aber diese Ausgabe muss mit dem gesuchten Wort beginnen? Das ist wirklich schwer zu erklären, deshalb möchte ich hier ein Beispiel geben:

Wenn Sie in der laufenden Cisco-Konfiguration nach etwas suchen möchten, würde ich den folgenden Befehl verwenden:

laufende Konfiguration anzeigen | b 10.0.1.202 – Die Ausgabe würde genau dort beginnen, wo 10.0.1.202 das erste Mal erwähnt wurde.

Beispielsweise habe ich eine sehr lange Datei mit dhcp.leases auf meinem CentOS, aber wie kann ich grep | b 10.0.1.202 ausführen, sodass meine Ausgabe dort beginnt, wo 10.0.1.202 zuerst gefunden wurde, und der Rest der Ausgabe danach aufgelistet wird?

Mit freundlichen Grüße,

Antwort1

Grep für die Adresse, aber zeigt eine unendliche Anzahl von Kontextzeilen an (mithilfe -Avon „Zeilen danach“, analog zu -B„Zeilen davor“, -C„Zeilen umgebend“):

cat dhcp.leases | grep -A9999999 '10\.0\.1\.202'

Obwohl Sie in Ihrem FallwahrscheinlichSie möchten nur 10-20 Zeilen und nicht das Ganze, daher sollten Sie nach die gewünschte Anzahl angeben -A.

Normalerweise verwende ich awk, um bestimmte Bereiche auszuschneiden (z. B. von Regex 1 bis Regex 2):

cat dhcp.leases | awk '/10\.0\.1\.202/ {found=1} found {print}'
cat dhcp.leases | awk '/10\.0\.1\.202/{f=1}f'

cat somefile | awk '/^Begin:/{ok=1} ok{print} /^End:/{ok=0}'

verwandte Informationen