Global Regular Expressions Print (grep)

Eintrag zuletzt aktualisiert am: 08.09.2017

Global Regular Expressions Print (grep) ist der wichtigste Textauswertungsbefehl in der bash-Shell.

echo "

Global Regular Expressions Print"
sudo ufw status verbose | grep -e "[0-9][0-9][0-9][0-9]"

echo "

Extended Global Regular Expressions Print für weiterte RA-Syntax"
sudo ufw status verbose | egrep "^[0-9]{1,4}"

Anders als die PowerShell/PowerShell Core ist die bash nicht objektorientiert, sondern rein textbasiert. Zur Auswertung der Ergebnisse von Kommandozeilenbefehlen benötigt sie daher die Textauswertungsbefehl grep und egrep. egrep versteht im Gegensatz zu grep auch die Befehle ? + { } | ( ) in Regulären Ausdrücken.

Grep unter PowerShell/PowerShell Core

Einen Befehl wie grep braucht man in der PowerShell selten, da die PowerShell-Commandlets ihre Ergebnisse nicht als Zeichenketten, sondern als strukturierte .NET-Objekte liefert. Dennoch gibt es in der PowerShell einen vergleichbaren Befehl (select-string) zur Auswertung klassischer Kommandozeilenbefehle, die Zeichenketten erzeugen.

Beispiel: Auswerten der offenen Firewall-Ports unter Linux mit PowerShell Core

sudo ufw status | select-string "^[0-9]{4}" | select-string -NotMatch "v6" | foreach { ($_.tostring() -replace' {2,}',"`t") } | ConvertFrom-CSV -Delimiter "`t" -Header To,Action,From | where to -gt 5000 | sort-object port | ft from,to,action