
在將模式與文件中的另一個字串匹配之前,我需要使用 sed 替換所有內容
我的文件中有各種路徑。無論使用者如何,這些路徑的最後幾個元件都是相同的,但是前幾個元件將會改變。
對於 例如 對於用戶1,該檔案包含以下路徑
build:
- "/Users/user1/Projects/Stash/sdk/license.txt"
為了用戶2,路徑可以是
build:
- "/Users/user2/Documents/Work/sdk/license.txt"
最後 2 個組件是“/sdk/license.txt「對於每個用戶來說都是一樣的。
我想用用戶提供的路徑替換這些元件之前的所有內容,因為它特定於該用戶。如何使用 sed 來執行這種替換?我正在使用 Perl 腳本來實現相同的目的。
答案1
您可以簡單地使用反向引用
sed -e 's/\(^[ ]*\- "\)\(.*\)\(\/sdk\/license\.txt"$\)/\1path_with_which_to_be_replaced\3/'
這裡
\(....\)
用於分組配對並保存以備將來使用,替換時使用,可以用作\1
\2
變數名稱。
所以,根據你的要求,我把線分成三組
\(^[ ]*\- "\)
為了space - "
\(.*\)
對於要更換的零件,例如/Users/user2/Documents/Work
\(\/sdk\/license\.txt"$\)
對於同一部分,即sdk/license.txt"