2017-03-14 93 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

相关问题