重定向和写入同一文件

时间:2013-06-25 09:23:37

标签: linux unix sed

您好我有一个脚本替换.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

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用-i的{​​{1}}选项直接更改文件。

因此,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

答案 1 :(得分:1)

您可以使用sed进行内联编辑,并且可以使用-e开关避免使用多个sed命令:

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