我创建了一个脚本,将所有 PL/SQL 文件格式化为一个具有值对的简单文件,它很难解释,我认为如果您只查看该文件会更容易;
PROCEDURE VALIDA_CAMBIO_GPR
TRUNCATE TMP_MOD_PVA
INSERT TMP_MOD_PVA
PROCEDURE AJUSTAR_FECHAS
INSERT PRO_TDA_VARLOG_ALM
PROCEDURE DEPURAR_CAMBIOS_GPR
PROCEDURE INC_EX_0001
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0002
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0003
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0005
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0007
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0008
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0009
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0010
INSERT CABECERA_ALARMAS
PROCEDURE INC_EX_0011
INSERT CABECERA_ALARMAS
好吧,这个文件有 4000 行,但我不需要所有的行,我想要的只是同一个表的 TRUNCATE 和 INSERTS 对,所以例如在最后一个文件中我只想保留名称包含该对的过程以及该对。 FE
PROCEDURE VALIDA_CAMBIO_GPR
TRUNCATE TMP_MOD_PVA
INSERT TMP_MOD_PVA
正如您所看到的,TRUNCATE 和 INSERT 影响同一个表,每个过程也可能有多个对。我怎么能这样做呢?
我不想要所有没有这些对的过程,而且我也不想要任何没有这些对的插入的截断。
抱歉,解释不好,如果 oyu 有理解问题,请发表评论,我会尽力升级。
PD:我使用 ksh。
Using awk
:
awk '$1=="PROCEDURE"{p=$0;next} p && $1=="TRUNCATE"{t=$2;next} t==$2 && $1=="INSERT"{
print p; print "TRUNCATE" t; print "INSERT" t; print ""; t=""}' file
PROCEDURE VALIDA_CAMBIO_GPR
TRUNCATETMP_MOD_PVA
INSERTTMP_MOD_PVA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)