2017-03-14 12 views
0

質問があります。私はすべての既存のスクリプトで別の文字列を使って下の文字列を置換する必要がありますが、sed -iコマンドは、すべての作業ではありません:sedを使用せずに特殊文字を含む長い文字列を置換する

sed: illegal option -- i Usage: sed [-n] [-u] Script [File ...] sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...] 

私はそれをどのように行うことができますか?

古い文字列:

FCC_DATE=`sqlplus -silent "$USER_NAME"/\`openssl des -d -k pass<"$SCRIPT_PATH"/"$PASS_FILE"\`@"$SID"<<ENDSQL 

新しい文字列:

FCC_DATE=`sqlplus -silent "$USER_NAME"/\"$SCHEMA_PASSWD"@"$SID"<<ENDSQL` 
+0

'sedの-i'呼び出しのための完全なメッセージは何を?あなたのシステムとそのバージョンは何ですか? –

+0

$ sed:不正なオプション - i 使用法:sed [-n] [-u]スクリプト[File ...] sed [-n] [-uスクリプト] ... [-f Script_file ] ... [ファイル...] -----これは私が助けてください受信しているメッセージです! – NMB

+0

あなたのシェルとそのバージョンは何ですか? 'myvar = $(コマンドのエコー出力)'と '$ {myvar/myold/mynew} 'の構文をサポートしていますか? –

答えて

0

あなたは、一時ファイルを使用できます。sed 'regex stuff' input > temp; mv temp input

+0

あなたは精巧にできますか? – NMB

+0

'sed -i'は" in place "を置き換えます。入力ストリームと出力ストリームを区別する必要はありません。 @JeLuFが古典的な方法を使うことを提案しているのは、 'sed -e 's/yourold/yournew /' curr_file> temp_file; mv temp_file curr_file'を 'curr_file'が進化するループで実行します。 –

+0

okありがとうLaurent、私は別の問題を修正しました。これは、キーワードの後に​​2行追加する必要があり、ここでLinuxでうまく動作するコマンドです:sed '/^get_system_date $/a \/flexapps/a2a_scripts /fc_common_code.sh \ SCHEMA_PASSWD = 'GetOraIDPWD fccint' 'abc.txt ...私のUNIXボックスでは、sedとして表示されています:Function /^get_system_date$/a\/flexapps/a2a_scripts/fc_common_code.sh \ SCHEMA_PASSWD =' GetOraIDPWD fccint'は解析できません。 ..Whashall私はこのためにやっています。提案しておいてください... – NMB

関連する問題