Bash
如何使用 sed 刪除開頭和結尾?
我怎樣才能從我的路徑中刪除第一個 ./ 和最後一個 /?
現在我的程式碼有:
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 '/'.
在
s
ubstitute 命令中,您甚至不需要轉義。嘗試sed -i 's%\./%%; s%/dir2/file-example.json%%;' test.sh
請注意,點也必須轉義才能關閉其在正則表達式中的特殊含義。
使用“反向引用”,這可能會變得更加簡單:
sed -i 's%\./\(dir1\)/dir2/file-example.json%\1%;' test.sh
其中
\1
引用回到第一個帶括號的部分正則表達式(這裡:dir1)。