2016-08-02 20 views
0

シェルスクリプトの新機能。 私はファイルを持っています。ファイル内の複数の行を、エスケープ文字を含む変数で1行に置き換えます。

にsample.txt

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

のように私は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

おかげで動作するはずです。私は置き換えた後に1行だけを持ち、行全体を置き換えたいと思う。私はちょうど期待されたとの質問を更新しました。 ;) どうやってするか? – iUser

+0

@satこれらの行は置き換えられません。更新された質問を期待される出力でチェックしてください。私はその行全体を行に置き換えたいと思っています:) – iUser

関連する問題