
サンプル_init.oraファイルがあります。
ファイルに2行があります。
db_create_file_dest="DATAG"
control_files=('DATAG/DBNAME/controlfile/control01.ctl','DATAG/DBNAME/controlfile/control02.ctl')
2行目をDATAGからDATAC2に変更したいと思います。どのような方法がありますか?多くのSED / AWKフォーラムを試しましたが、オプションはありませんでした。 SEDに基づく応答は高い評価を受けます。
答え1
あなたの質問は「似たような」行に言及していますが、それをどのように区別するのかを教えてくれません。
たとえば、すべてのインスタンスを次のようにDATAG
置き換えます。DATAC2
ただcontrol_files
利用可能な文字列で始まる行
sed '/^control_files/ s/DATAG/DATAC2/g'
^control_files
別の区別されるパターンに置き換えると、一般的な方法で動作します。
答え2
最も確実なsedソリューションは次のとおりです。
sed 2s/DATAG/DATAC2/g sample_init.ora > new_file.ora
またはsedがサポートしている場合は、その場で編集してください-i
。
sed -i 2s/DATAG/DATAC2/g sample_init.ora
sed コマンドは次のとおりです。
2
- 2号線s//
- 検索と交換g
- 最初のゲームだけでなく、すべてのゲームを交換します。
答え3
これが次のとおりです。精密ファイルに行が表示される形式は、次を使用します。
sed -i 's/DATAG\//DATAC2\//g' <filename> > <new_filename>
2行目のDATAGインスタンスの後に「/」がありますが、1行目にはないため、これは機能します。したがって、実行すると、提供した例が表示されます。
db_create_file_dest="DATAG"
control_files=('DATAC2/DBNAME/controlfile/control01.ctl','DATAC2/DBNAME/controlfile/control02.ctl')
ファイルのどこにあるかは問題ではありません。