2016-05-03 14 views
0
[root etc]# grep "^server" /etc/ntp.conf 
server 10.10.10.2 
server 10.10.11.3 
server 10.12.13.4 

[root etc]# grep "^\s*server (10\.10\.10\.2|10\.10\.11\.3)" /etc/ntp.conf 
[root etc]# (Nothing return) 

Nichts anzeigen, wie kann ich die angegebenen IP-Adressen grep?Regex - Grep die angegebenen NTP IP-Adressen

+0

Grep ist nicht regexes. Es ist glob. Verwenden Sie egrep oder den '-E' Modifikator für Regexes – Laurel

Antwort

1

Sie müssen nur -E auf Ihren Befehl grep hinzuzufügen.

grep -E "^\s*server (10\.10\.10\.2|10\.10\.11\.3)" /etc/ntp.conf 
+0

Dank ~ ich verpasste das" E " –

1

Verwendung grep -E mit einem Rohrtrenner für OR

grep -E "^server 10.10.10.2|^server 10.10.11.3" /etc/ntp.conf 
0

können Sie einfach Muster verwenden, wie unten:

grep 10.10.10.* filename 

Oder Sie haben wie unten -E für erweiterte Regexp zu verwenden:

grep -E 10.10.\(10\|11\).* filename 
1

Nachfolgend liest die Suchzeichenfolgen aus der Standardeingabe .

grep -F "$(awk NF </dev/stdin)" /etc/ntp.conf | grep -P '^\s*server\s+' 
  • grep -F sucht nach festen Strings
  • $(... </dev/stdin) - liest von der Standardeingabe bis Ctrl-D
  • gedrückt
  • awk NF Leerzeilen
  • grep -P '^\s*server\s+' sucht nach server Einträge aus dem vorherigen grep Ausgabe
entfernt
+0

Nett für den interaktiven Modus ~ Danke –