Ich habe ein Leerzeichen getrennt Zeichenkette , die Ausgabe von einem Befehl, der ich mag Rohr cut
, unter Verwendung von -fd ' '
auf Räume aufzuteilen. Ich weiß, dass ich die Feldnummer -f <n>
anzeigen <n>
kann, aber kann ich das letzte Feld anzeigen lassen, wenn ich die Länge der Zeichenfolge nicht kenne?
Oder muss ich ein flexibleres Textbearbeitungswerkzeug wie sed
oder verwenden awk
?
command-line
cut-command
Arronisch
quelle
quelle
-n
macht es von Anfang an zum n,n-
ist von n bis zum Ende und es gibt die--complement
Option, die die Auswahl umkehrt. Aber keine Möglichkeit, die Anzahl der Felder zu zählen und darauf zu reagieren, soweit ich das beurteilen kann.Antworten:
Nein, das
cut
kann ich nicht. Sie können zweirev
Befehle verwenden, wie zaber es ist normalerweise einfacher zu bedienen
awk
:quelle
Sie können dies nur mit der Shell tun. Mit der Parametererweiterung wird kein externes Tool benötigt:
var##*
verwirft alles vom Start bis zum letzten Leerzeichen vom Parameter (Variable)var
.Wenn das Trennzeichen ein Leerzeichen sein kann, z. B. Leerzeichen oder Tabulator, verwenden Sie die Zeichenklasse
[:blank:]
:Beispiel:
quelle
Ich persönlich mag Florian Dieschs Antwort. Aber es gibt auch diesen Weg.
Erläuterung:
wc -w
gibt die Anzahl der Wörter an. undcut
schneidet das letzte WortBEARBEITEN:
Ich habe mir einen anderen Weg ausgedacht:
quelle
a="my string here"
könnte ich auch die Parametererweiterung von verwenden${a##* }
.Hier ist eine Verwendung
grep
Wie es funktioniert:
-o
Druckt nur die übereinstimmenden (nicht leeren) Teile einer übereinstimmenden Zeile.[^ ]*$
stimmt mit allem vom Ende überein, bis er ein Leerzeichen gefunden hat.Ein weiterer Liner von Glenn Jackman mit Perl
quelle