Ich muss den Dateinamen und das enthaltene Verzeichnis aus einem vollständigen Pfad extrahieren (DOS-Syntax). Ich muss dies mit sed tun, da es Teil eines größeren regulären Ausdrucks ist.
Beispieleingabe: ..\home\test\somedir\anotherdir\myfile.txt
Erwartete Ausgabe: anotherdir\myfile.txt
Für jede Hilfe wäre ich sehr dankbar.
Danke
Antwort1
Gehen Sie es einfach methodisch an. Sie möchten eine Zeile in drei Teile unterteilen: ein beliebiges Präfix .*
und dann zweimal einen Backslash, gefolgt von Zeichen, die kein Backslash sind \\[^\\]*
. Erfassen Sie, was nach dem vorletzten Backslash kommt, und lassen Sie den Rest weg.
printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'
(Vorsicht, echo
einige Shells erweitern Backslashes.)
Antwort2
Gibt es einen bestimmten Grund, awk nicht zu verwenden?
echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'