我需要從完整路徑(DOS 語法)中提取檔案名稱和包含目錄。我需要使用 sed 來執行此操作,因為它是更大的正規表示式的一部分。
輸入範例:..\home\test\somedir\anotherdir\myfile.txt
預期輸出:anotherdir\myfile.txt
任何幫助將不勝感激。
謝謝
答案1
只要有條不紊地去做就好了。您想要將一行分為三部分:任意前綴.*
,然後是兩個反斜杠,後面跟著非反斜杠字元\\[^\\]*
。捕捉倒數第二個反斜線之後的內容並刪除其餘內容。
printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'
(請注意echo
,某些 shell 會擴展反斜線。)
答案2
有什麼特殊原因不使用 awk 嗎?
echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'