Mensagens de erro não são exibidas ao comparar os tipos de dados de 2 arquivos no shell script

0

Temos um requisito para comparar os tipos de dados. Eu criei arquivos .txt com tipos de dados e escrevi uma consulta para obter os tipos de dados da tabela do sistema netezza (estamos usando o banco de dados netezza) e exportando para o arquivo .TXT. E eu usei o comando diff -q para destacar se há alguma incompatibilidade. Na verdade, estou obtendo resultados corretos sempre que eles estão combinando, mas não está destacando se há alguma incompatibilidade. Eu poderia perder para dar uma mensagem de erro de eco correta ou algo mais para obter como esperado. 10 arquivos totais precisam ser verificados, então eu usei para loop.

Eu experimentei o código abaixo, mas se você tiver uma lógica simples ou qualquer insight, será ú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';

Estou esperando uma saída como abaixo.

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
    
por Samah 07.04.2017 / 10:52

1 resposta

0

Não sei exatamente o que você quer dizer com "destacar" a diferença dos dois arquivos, mas é possível usar diff para exibir as diferenças dos dois arquivos:

diff file1 file2 | grep "<" | sed 's/^<//g' a ser exibido para stdout

que produzirá o resultado:

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

ou

diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txt para gravar em um novo arquivo.

ou você também pode tentar sort :

sort file1 file2 | uniq -u

que produz o mesmo resultado:

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

Espero que isso ajude!

    
por 09.04.2017 / 15:58