GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash =~ Regex und Https://regex101.com/?

Unter Verwendung von https://regex101.com/ habe ich einen regulären Ausdruck erstellt, um das erste Vorkommen einer IP-Adresse in einer Zeichenfolge zurückzugeben.

RegExp:

(?:d{1,3}.)+(?:d{1,3})

RegExp einschließlich Trennzeichen:

/(?:d{1,3}.)+(?:d{1,3})/

Mit folgendem Teststring:

eu-west                       140.243.64.99 

Es gibt eine vollständige Übereinstimmung von:

zurück
140.243.64.99

Egal, was ich mit Ankern usw. versuche, das folgende Bash-Skript funktioniert nicht mit dem generierten regulären Ausdruck.

temp="eu-west                       140.243.64.99            "
regexp="(?:d{1,3}.)+(?:d{1,3})"
if [[ $temp =~ $regexp ]]; then
  echo "found a match"
else
  echo "No IP address returned"
fi

Akzeptierte Antwort:

d ist eine nicht standardmäßige Art, „jede Ziffer“ zu sagen. Ich denke, es stammt von Perl, und viele andere Sprachen und Dienstprogramme unterstützen auch Perl-kompatible REs (PCRE). (und z. B. unterstützt GNU grep 2.27 in Debian Stretch das ähnliche w für Wortzeichen sogar im normalen Modus.)

Bash unterstützt d nicht , also müssen Sie explizit [0-9] verwenden oder [[:digit:]] . Gleiches gilt für die nicht einfangende Gruppe (?:..) , verwenden Sie einfach (..) stattdessen.

Dies sollte match ausgeben :

temp="eu-west                       140.243.64.99            "
regexp="([0-9]{1,3}.)+([0-9]{1,3})"
[[ $temp =~ $regexp ]] && echo match

Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  3. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

  4. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Django static_root in /var/www/... - keine Berechtigungen für collectstatic

unix:///var/run/supervisor.sock keine solche Datei

Warum andere Dinge als /home auf eine separate Partition legen?

Unterschied zwischen /bin und /usr/bin

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?