Ersetzen Sie alle Zeilen in vim durch das, was nach dem letzten Schrägstrich in einer Zeile steht.

Ersetzen Sie alle Zeilen in vim durch das, was nach dem letzten Schrägstrich in einer Zeile steht.

Ich habe Beispieldaten wie:

aaa/bbb/ccc/ddd/eee/fff
aaa/bbb/ccc/ddd/eee/fff/gg
aaa/bbb/ccc/ddd/eee/fff/gg/hhhhh

Wie kann ich nur Folgendes analysieren:

fff
gg
hhhhh

mit vim oder bash?

Danke

Antwort1

Sie können verwenden awk. Sie möchten das letzte Feld, haben aber ein anderes Trennzeichen.

-F: --Feldtrennzeichen.

Awk NF gibt Ihnen die Gesamtzahl der Felder in einem Datensatz. Wenn ich also NF sage, meine ich die letzte Feldnummer oder ihren Index. also ist {print $NF} ähnlich wie {print $1} oder {print $2}.

➜  awk -F'/' '{print $NF}' test.txt
fff
gg
hhhhh

Antwort2

Mit Vim können Sie Folgendes verwenden, um alles vor dem letzten Schrägstrich ( /) zu entfernen:

:%s/.*\///

Sie könnten etwas Ähnliches tun mit sed:

sed 's/.*\///' file

Antwort3

Bash ist hierfür wahrscheinlich nicht die erste Wahl:

mapfile -t < data; printf %s\\n "${MAPFILE[@]##*/}"

verwandte Informationen