쉘 스크립트에서 두 파일의 데이터 유형을 비교하는 동안 오류 메시지가 표시되지 않습니다.

쉘 스크립트에서 두 파일의 데이터 유형을 비교하는 동안 오류 메시지가 표시되지 않습니다.

데이터 유형을 비교해야 한다는 요구 사항이 있습니다. 데이터 유형이 포함된 .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

두 파일의 차이점을 "강조 표시"한다는 것이 정확히 무엇을 의미하는지 잘 모르겠지만 diff두 파일의 차이점을 표시하는 데 사용할 수 있습니다.

diff file1 file2 | grep "<" | sed 's/^<//g'stdout에 표시하려면

결과는 다음과 같습니다.

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

관련 정보