sed oneliner 取得檔案名稱和包含目錄

sed oneliner 取得檔案名稱和包含目錄

我需要從完整路徑(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 }'

相關內容