2017-03-14 114 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]腳本[文件...] sed [-n] [-u] [-e Script] ... [-f Script_file ] ... [文件...] -----這是我收到的消息,請幫助! – NMB

+0

什麼是你的shell,哪個是它的版本?它支持語法'myvar = $(命令的echo輸出)'和'$ {myvar/myold/mynew}'嗎? –

回答

0

你可以使用一個臨時文件:sed 'regex stuff' input > temp; mv temp input

+0

請問您能詳細說明一下嗎? – NMB

+0

'sed -i'替換「就地」:您不必關心將輸入流與輸出流分開。 @JeLuF建議使用古老的方式:'sed -e's/yourold/yournew /'curr_file> temp_file; mv temp_file curr_file'在一個循環中與'curr_file'演變。 –

+0

好吧,得到了那個感謝Laurent,我ahd修復它現在我的另一個問題是我需要在關鍵字後面添加兩行,這裏是在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'不能被解析。 ..我想這樣做..請建議... – NMB

相關問題