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

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

데이터 유형을 비교해야 합니다. 데이터 유형이 포함된 .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'표준 출력으로 표시

결과는 다음과 같습니다.

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

관련 정보