Shell-Script

sed + 從路徑中刪除第一個目錄

  • March 9, 2019

我需要從路徑中刪除第一個目錄sed,(反向 pf 是做什麼basename的)。

例如

echo "/mnt/VPfig/Amer/AR4/Celtel/files/COM.txt" | sed ...

我應該得到:

/VPfig/Amer/AR4/Celtel/files/COM.txt

嘗試:

echo "/mnt/VPfig/Amer/AR4/Celtel/files/COM.txt" | sed 's|^/[^/]*||'

這給了我:

/VPfig/Amer/AR4/Celtel/files/COM.txt

它查找第一個/後跟盡可能多的 non- /,然後用空字元串替換它們。

在 POSIX 外殼中:

$ x='/mnt/VPfig/Amer/AR4/Celtel/files/COM.txt'
$ printf "/%s\n" "${x#/*/}"
/VPfig/Amer/AR4/Celtel/files/COM.txt

解釋

參數擴展 刪除路徑的${x#/*/}前導組件,其中兩個/s 將其包圍,並將printf前導/返回。

引用自:https://unix.stackexchange.com/questions/145057