2012-03-15 60 views
0

一直試圖使用看幾個小時。可以使用普通字符串來處理它,但不能使用斜槓。sed替換文件中的url並重新保存

試圖將/var/www/vhosts/sandbox.modernactivity.co.uk/替換爲無。

sed 's%var%%' /Volumes/WEB_BACKUP/backups/ukfast/scripts/INCLUDE_list.txt 

吐出//www/vhosts/sandbox.modernactivity.co.uk/restofurl/和原來是/var/www/vhosts/sandbox.modernactivity.co.uk/restofurl/。只是無法識別斜槓。

它似乎也沒有更新文件?

任何提示歡迎!

+0

這個每週都會被問到。祝你好運尋找答案。 – shellter 2012-03-15 11:04:07

回答

1

這是你想要的嗎?

sed 's#/var.*\.co\.uk/##' file 

測試:

kent$ echo "foo/foo/var/www/vhosts/sandbox.modernactivity.co.uk/bar/bar"|sed 's#/var.*\.co\.uk/##' 
foo/foobar/bar 

,如果你想改變原有的文件,SED,添加-i選項。像:

sed -i 's/foo/bar/' file 
+0

你好,儘管我只想要刪除所以sed的#/ var/www/vhosts/##現在的作品。謝謝!當我使用-i我得到一個錯誤,所以似乎無法使用相同的文件。然而,old.txt> new.txt會將結果放入一個新文件中。謝謝你的幫助? %或#的定義是什麼?認爲這是什麼讓我感到困惑...... – v3nt 2012-03-15 11:09:50

+0

-i意味着(更改)就地備份是可選的。它應該工作。檢查sed的手冊頁。 #是's'命令的/../../'可以是s#..#..#..因爲你的文本有「/(斜線)」我不想逃避每一個斜線。 – Kent 2012-03-15 11:13:37

+0

啊 - 對不起。這似乎不適用於變量?DIR =/var/www/vhosts /,sed的#$ DIR ##'。我需要使用不同的分隔符嗎? – v3nt 2012-03-15 11:16:14

2

嘗試:

find . -name "yourfile.txt" -print | xargs sed -i "" 's/\/var\/www\/.*\.co\.uk//g' 

使用\逃跑 '/'

如果您在Mac上工作使用-i ""

否則在Linux上只寫-i

+0

謝謝 - 我在Mac上所以需要「」之後的-i – v3nt 2012-03-15 11:20:51