Bash

如何使用 sed 刪除開頭和結尾?

  • April 7, 2022

我怎樣才能從我的路徑中刪除第一個 ./ 和最後一個 /?

現在我的程式碼有:

sed -i 's/dir2\/file-example.json//' test.sh

它列印出來是這樣的:

./dir1/

但我想這樣:

dir1

以便它從開頭和結尾刪除 ./ 和 / 並僅保留目錄名稱。

這可能嗎?

您不必使用/作為正則表達式分隔符,但可以回退到“任何其他單個字元” - 轉義它。info sed

‘%REGEXP%’(’%’ 可以被任何其他單個字元替換。)

 This also matches the regular expression REGEXP, but allows one to
 use a different delimiter than '/'.

substitute 命令中,您甚至不需要轉義。嘗試

sed -i 's%\./%%; s%/dir2/file-example.json%%;' test.sh

請注意,點也必須轉義才能關閉其在正則表達式中的特殊含義。

使用“反向引用”,這可能會變得更加簡單:

sed -i 's%\./\(dir1\)/dir2/file-example.json%\1%;' test.sh

其中\1引用回到第一個帶括號的部分正則表達式(這裡:dir1)。

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