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

So finden Sie das letzte Feld mit 'Ausschneiden'

Ohne awk ?...Aber es ist so einfach mit awk:

echo 'maps.google.com' | awk -F. '{print $NF}'

AWK ist ein viel leistungsfähigeres Werkzeug, das man in der Tasche haben sollte. -F wenn für FeldtrennerNF die Anzahl der Felder ist (steht auch für den Index des letzten)


Sie könnten so etwas versuchen:

echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev

Erklärung

  • rev kehrt "maps.google.com" zu moc.elgoog.spam um
  • cut verwendet Punkt (dh '.') als Trennzeichen und wählt das erste Feld, das moc ist
  • Zuletzt kehren wir es wieder um, um com zu erhalten

Es ist nicht möglich, nur cut zu verwenden . Hier ist eine Möglichkeit, grep zu verwenden :

grep -o '[^,]*$'

Ersetzen Sie das Komma für andere Trennzeichen.

Erklärung:

  • -o (--only-matching ) gibt nur den Teil der Eingabe aus, der mit dem Muster übereinstimmt (standardmäßig wird die gesamte Zeile gedruckt, wenn sie eine Übereinstimmung enthält).
  • [^,] ist eine Zeichenklasse, die jedem anderen Zeichen als dem Komma entspricht.
  • * stimmt mit dem vorhergehenden Muster null oder öfter überein, also [^,]* stimmt mit null oder mehr Nicht-Komma-Zeichen überein.
  • $ entspricht dem Ende der Zeichenfolge.
  • Zusammengenommen entspricht das Muster null oder mehr Nicht-Komma-Zeichen am Ende der Zeichenfolge.
  • Wenn es mehrere mögliche Übereinstimmungen gibt, grep bevorzugt diejenige, die am frühesten beginnt. Das gesamte letzte Feld wird also abgeglichen.

Vollständiges Beispiel:

Wenn wir eine Datei namens data.csv haben enthält

one,two,three
foo,bar

dann grep -o '[^,]*$' < data.csv wird ausgegeben

three
bar

Verwenden Sie eine Parametererweiterung. Dies ist viel effizienter als jede Art von externem Befehl, cut (oder grep ) enthalten.

data=foo,bar,baz,qux
last=${data##*,}

Siehe BashFAQ #100 für eine Einführung in die native String-Manipulation in Bash.


Linux
  1. So prüfen Sie Berechtigungen mit dem Befehl find

  2. Wie benenne ich mehrere Dateien mit Find um?

  3. Sortieren nach dem letzten Feld einer Zeile

  4. Wie kann man mit cut mehr Leerzeichen für das Trennzeichen angeben?

  5. Wie finde ich heraus, über welche Schnittstelle ich mich mit dem Internet verbinde?

So finden Sie die installierte Version von Redhat Linux

So finden Sie Dateien über die Befehlszeile im Linux-Terminal

So finden Sie die Portnummer eines Dienstes in Linux

So finden Sie die IP-Adresse einer virtuellen KVM-Maschine

So finden Sie die zuletzt angemeldeten Benutzer in Linux

So finden Sie die letzte Anmeldung unter Linux