1

こんにちは、.sql ファイル内の特定のオカレンスを置き換え、その後、それをいくつかの新しいファイルに書き込むスクリプトがあります。だから、ここで不必要に余分なファイルを作成しています。とにかく、同じファイルに書き込むことができる方法はありますか。

以下はスクリプトの一部です。

sed "s/v1/$value1/g" Save.sql >> CreateViewFinal1.sql
sed "s/v2/$value2/g" CreateViewFinal1.sql >> CreateViewFinal2.sql
sed "s/v3/$value3/g" CreateViewFinal2.sql >> CreateViewFinal3.sql
sed "s/v4/$value4/g" CreateViewFinal3.sql >> CreateViewFinal4.sql
sed "s/v5/$value5/g" CreateViewFinal4.sql >> CreateViewFinal5.sql
sed "s/v6/$value6/g" CreateViewFinal5.sql >> CreateViewFinal6.sql
sed "s/v7/$value7/g" CreateViewFinal6.sql >> CreateViewFinal7.sql
sed "s/v8/$value8/g" CreateViewFinal7.sql >> CreateViewFinal8.sql
sed "s/v9/$value9/g" CreateViewFinal8.sql >> CreateViewFinal9.sql
sed "s/a1/$value10/g" CreateViewFinal9.sql >> CreateViewFinal10.sql
sed "s/b1/$value11/g" CreateViewFinal10.sql >> CreateViewFinal11.sql
sed "s/c1/$value12/g" CreateViewFinal11.sql >> CreateViewFinal12.sql


sqlplus -S -L cimkroger/cimkroger@orcl @CreateViewFinal12.sql

前もって感謝します。

4

2 に答える 2

1

はい。

-iのオプションを使用して、ファイルを直接変更できますsed

したがって、sed -i .... file同じファイル内の何かを置き換えます。

さらに、非常に多くのsed異なる行の代わりにsed、オプションを使用して複数のアクションを実行でき-eます。したがって、代わりに:

sed "s/v1/$value1/g" Save.sql >> CreateViewFinal1.sql
sed "s/v2/$value2/g" CreateViewFinal1.sql >> CreateViewFinal2.sql
sed "s/v3/$value3/g" CreateViewFinal2.sql >> CreateViewFinal3.sql

できるよ

sed -i -e "s/v1/$value1/g" -e "s/v2/$value2/g" -e "s/v3/$value3/g" Save.sql

等々。

$ cat file
hello you
$ sed -i -e 's/hello/bye/g' -e 's/you/me/g' file
$ cat file
bye me
于 2013-06-25T09:24:45.030 に答える
1

-esed のインライン編集が可能で、次のようにスイッチを使用して複数の sed コマンドを回避できます。

sed -i.bak -e "s/v1/$value1/g" -e "s/v2/$value2/g" -e "s/v3/$value3/g" Save.sql
于 2013-06-25T09:26:44.333 に答える