1

本番ホストから開発ホストへのバックアップベースの DUPLICATE データベース (Oracle) を実行する bash スクリプトを作成しようとしています。手順の 1 つは、本番データベースの pfile のコピーを取得し、適切に編集してから、別のホストで新しいインスタンスを起動することです。bash スクリプトで次のことを行うのが困難です。

Production pfile: (一行を例に挙げます。他はすべて同じです)

*.audit_file_dest='/u01/app/grid/admin/orcl11/adump'

上記の行を次のように完全に変更する必要があるとしましょう。

*.audit_file_dest='/u02/another/path'

StackOverflow の例を見てきましたが、本当に理解できません。誰かが私を助けてくれますか?

よろしくお願いします!

編集:どうもありがとう。これは魔法のようにうまくいきました。トピック回答済み。

4

2 に答える 2

2

質問に貼り付けたのとまったく同じ場合は、次のようsedに置き換えることができます。

sed -i "s@audit_file_dest='/u01/app/grid/admin/orcl11/adump'@audit_file_dest='/u02/another/path'@" your_file
于 2012-09-21T08:30:23.670 に答える
0

質問の 1 行だけを変更する必要がある場合は、@leafei の行が役に立ちます。

「pfile」をカスタマイズする場合は、次のように変更します。

nameA='oldA'
nameB='oldB'
nameC='oldC'

nameA='newA'
nameB='oldB' #here perhaps you want to keep the old value
nameC='newC'

あなたはこれを試すことができます:

awk  'BEGIN{s="\x27";FS=OFS="="}{if($1=="nameA"){print $1,s"newA"s;next;} if($1=="nameC"){print $1,s"newC"s;next;}}1' pfile

テスト:

kent$  echo "nameA='oldA'
nameB='oldB'
nameC='oldC'"|awk  'BEGIN{s="\x27";FS=OFS="="}{if($1=="nameA"){print $1,s"newA"s;next;} if($1=="nameC"){print $1,s"newC"s;next;}}1'
nameA='newA'
nameB='oldB'
nameC='newC'
于 2012-09-21T08:56:04.227 に答える