2014-07-08 83 views
1

我有一個xml文件,其中包含噸和絕對路徑字符串(例如/home/matt/somefolder/somefile.c)。我想用相對地址替換它們(./somefile.c)。我的劇本是這樣的,它似乎並沒有被替換的路徑字符串使用sed替換文件中的所有路徑字符串

tmp=`pwd` 
cat a.xml | sed 's/$tmp/.' > a.xml 

回答

0

這應該做的伎倆:

tmp=$(pwd) 
sed "s#$tmp#.#" a.xml > a2.xml 

注意雙引號,以確保$tmp被取代。並且由於路徑包含斜線,因此sed最好使用不同的字符(本例中爲#)。

+1

這應該被重寫。 #1,不要將'cat'用於可以像sed一樣讀取數據的程序。 #2。不要使用陳舊過時的背景,使用括號。因此,這將是:'tmp = $(pwd)'和'sed的s#$ tmp#。「a.xml> a2.xml' – Jotne

+0

嘿,謝謝你的評論。我已經用你的建議更新了我的答案。 –