1
我有一個xml文件,其中包含噸和絕對路徑字符串(例如/home/matt/somefolder/somefile.c
)。我想用相對地址替換它們(./somefile.c
)。我的劇本是這樣的,它似乎並沒有被替換的路徑字符串使用sed替換文件中的所有路徑字符串
tmp=`pwd`
cat a.xml | sed 's/$tmp/.' > a.xml
我有一個xml文件,其中包含噸和絕對路徑字符串(例如/home/matt/somefolder/somefile.c
)。我想用相對地址替換它們(./somefile.c
)。我的劇本是這樣的,它似乎並沒有被替換的路徑字符串使用sed替換文件中的所有路徑字符串
tmp=`pwd`
cat a.xml | sed 's/$tmp/.' > a.xml
這應該做的伎倆:
tmp=$(pwd)
sed "s#$tmp#.#" a.xml > a2.xml
注意雙引號,以確保$tmp
被取代。並且由於路徑包含斜線,因此sed最好使用不同的字符(本例中爲#
)。
這應該被重寫。 #1,不要將'cat'用於可以像sed一樣讀取數據的程序。 #2。不要使用陳舊過時的背景,使用括號。因此,這將是:'tmp = $(pwd)'和'sed的s#$ tmp#。「a.xml> a2.xml' – Jotne
嘿,謝謝你的評論。我已經用你的建議更新了我的答案。 –