Los mensajes de error no se muestran al comparar los tipos de datos de 2 archivos en el script de shell

Los mensajes de error no se muestran al comparar los tipos de datos de 2 archivos en el script de shell

Tenemos el requisito de comparar los tipos de datos. Creé archivos .txt con tipos de datos y escribí una consulta para obtener los tipos de datos de la tabla del sistema Netezza (estamos usando la base de datos Netezza) y exportarlos a un archivo .TXT. Y he usado diff -qel comando para resaltar si hay discrepancias. En realidad, obtengo resultados correctos siempre que coinciden, pero no resalta si hay discrepancias. Es posible que no haya proporcionado mensajes de error de eco correctos o algo más para obtener el resultado esperado. Es necesario verificar un total de 10 archivos, por lo que he usado el bucle for.

Probé el siguiente código, pero si tiene alguna lógica simple o alguna idea, sería útil.

for <condition>
do
TABLE_ddl="SELECT TYPE_NAME FROM SYSTEM.._V_SYS_COLUMNS WHERE TABLE_NAME = '${TABLENAME}name';
echo ${TABLE_ddl};

CURRENT_TEMP_DDL=`nzsql -h ${hostname} -db ${database} -u ${username} -pw ${password} -A -t -o ${PATH}/${TABLENAME}_TABLE.TXT -c "${TABLE_ddl}"`
echo ${CURRENT_TABLE_DDL};
done

CHECK=`diff -q ${PATH}/${TABLENAME}_FILE.txt ${PATH}/${TABLENAME}_TABLE.TXT`;

Y espero un resultado como el siguiente.

tablename
CURRENT_TEMP_DDL #Query which should reflect with table name
datatypes matched
For ex. 
employee
select type_name from system.._v_sys_columns where table_name = 'employee' and database =<dbname>
datatypes matched for employee_FILE.txt and employee_TABLE.TXT

department
select type_name from system.._v_sys_columns where table_name = 'department' and database =<dbname>
datatypes unmatched for department_FILE.txt and department_TABLE.TXT

Respuesta1

No estoy seguro de qué quiere decir exactamente con "resaltar" la diferencia de los dos archivos, pero puede utilizar diffpara mostrar las diferencias de los dos archivos:

diff file1 file2 | grep "<" | sed 's/^<//g'para mostrar en la salida estándar

que producirá el resultado:

skywalker@endor:~/scripts/python/proxyupdate$ diff proxyupdate.py proxyupdate.bak | grep "<" | sed 's/^<//g'
 #this line is added for testing

o

diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txtpara escribir en un nuevo archivo.

o también puedes probar sort:

sort file1 file2 | uniq -u

que produce el mismo resultado:

skywalker@endor:~/scripts/python/proxyupdate$ sort proxyupdate.py proxyupdate.bak | uniq -u
#this line is added for testing

información relacionada