在 shell 腳本中比較 2 個檔案的資料類型時,未顯示錯誤訊息

在 shell 腳本中比較 2 個檔案的資料類型時,未顯示錯誤訊息

我們需要比較資料類型。我創建了帶有資料類型的 .txt 文件,並編寫了一個查詢以從 netezza 系統表(我們使用 netezza 資料庫)獲取資料類型並匯出到 .TXT 文件。我已經使用diff -q命令來突出顯示是否有任何不匹配。實際上,每當匹配時我都會得到正確的結果,但如果有任何不匹配,它不會突出顯示。我可能錯過了給出正確的回顯錯誤訊息或其他內容以按預期獲得。

我嘗試了下面的程式碼,但如果您有任何簡單的邏輯或任何見解都會有所幫助。

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`;

我期待如下的輸出。

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

答案1

我不確定“突出顯示”兩個文件的差異到底是什麼意思,但您可以用來diff顯示兩個文件的差異:

diff file1 file2 | grep "<" | sed 's/^<//g'顯示到標準輸出

這將產生結果:

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

或者

diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txt寫入新文件。

或者你也可以嘗試sort

sort file1 file2 | uniq -u

產生相同的結果:

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

相關內容