シェルスクリプトで2つのファイルのデータ型を比較す​​ると、エラーメッセージは表示されません。

シェルスクリプトで2つのファイルのデータ型を比較す​​ると、エラーメッセージは表示されません。

データ型を比較す​​る必要があります。データ型を含む.txtファイルを作成し、netezzaシステムテーブル(私たちはnetezzaデータベースを使用)からデータ型を取得し、.TXTファイルにエクスポートするクエリを作成しました。diff -q矛盾があるかどうかを強調表示するためにコマンドを使用しました。実際に一致する項目があるたびに正しい結果が得られますが、一致しない項目がある場合は強調表示されません。正しいエコーエラーメッセージや期待どおりに得られる内容を提供できなかった可能性があります。確認するファイルは合計10個で、forループを使用しました。

以下のコードを試してみましたが、単純なロジックや洞察力があれば役立ちます。

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

2つのファイル間の違いを「強調表示する」ことが正確に何を意味するのかわかりませんが、それを使用して2つのファイル間の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

関連情報