2016-08-02 49 views
0

新增Shell腳本。 我有文件。像使用包含轉義字符的變量替換單行文件中的多行

sample.txt的

some text1 
txt2 
element : /home/user/somelocation text1 
loc : /home/user/somelocation text2 

樣我試圖寫shell腳本element : /home/testuser/somelocation text

更換含/home/user/線兩種搜索並替換文本測試是可變的,從用戶得到。

#!/bin/csh 

# Sample searchStr="/home/user/" 
set searchStr=$1 

# Sample rplcStr="element : /home/testuser/somelocation text" 
set rplcStr=$2 
sed -i '/$searchStr/c\$rplcStr' sample.txt 

但這不起作用。

期望輸出

some text1 
txt2 
element : /home/testuser/somelocation text 

如何更換呢?

回答

1

你可以試試這個sed

sed "/^element :/s|^.*$search.*$|$replace|g" file 

測試:

$ search="/home/user/" 
$ replace="element : /home/testuser/somelocation text" 
$ sed "/^element :/s|^.*$search.*$|$replace|g" file 
some text1 
txt2 
element : /home/testuser/somelocation text 
loc : /home/user/somelocation text2 
+0

是的,這應該工作+1 – anubhava

+0

感謝。我想在更換後只有一條線,並且要更換整條線。我剛剛更新了問題,並期待了。 ;) 怎麼做? – iUser

+0

@sat它並沒有取代這些線條。請檢查具有預期輸出的更新問題。我想用該行代替整行:) – iUser

相關問題