フルパス (DOS 構文) からファイル名とそれを含むディレクトリを抽出する必要があります。これはより大きな正規表現の一部であるため、sed を使用してこれを実行する必要があります。
入力例: ..\home\test\somedir\anotherdir\myfile.txt
予想される出力: anotherdir\myfile.txt
ご協力いただければ幸いです。
ありがとう
答え1
とにかく系統的に進めてください。行を 3 つの部分に分割します。任意のプレフィックス.*
、2 つのバックスラッシュ、それに続く非バックスラッシュ文字です\\[^\\]*
。最後から 2 番目のバックスラッシュの後の部分をキャプチャし、残りを削除します。
printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'
(echo
一部のシェルではバックスラッシュが展開されるので注意してください。)
答え2
awk を使用しない特別な理由はありますか?
echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'