두 파일을 축어적으로 비교하는 방법과 차이점이 발생한 줄과 위치를 표시해야 합니다.

두 파일을 축어적으로 비교하는 방법과 차이점이 발생한 줄과 위치를 표시해야 합니다.

저는 이 포럼을 처음 접했고 비교해야 할 두 개의 파일이 있습니다. 파일에는 구분 기호가 없고 데이터가 위치에 있으므로 각 문자를 한 줄씩 비교해야 합니다. 아래 sdiff 명령을 사용했지만 예상되는 출력이 표시되지 않고 다른 줄 번호만 표시되고 문자 위치는 표시되지 않습니다.

sdiff file1 file2 | grep "|" > log file

아래 코드를 시도해 보았는데, 도와주실 수 있나요?

for i in `cat  /home/okanung/test_handoff/testfile1`
do
for j in `cat  /home/okanung/test_handoff/testfile2`
do

for ((k=0;k <=`echo $i | wc -c `;k++))
do
a=${i:k:1}
b=${j:k:1}
if [ "$a" != "$b" ]
then
lineno=`grep -n "$i" /home/okanung/test_handoff/testfile1 | cut -d ":" -f 1`
echo "mismatch is at line no $lineno  at position $k" | sort -n | uniq -c >> /home/okanung/test_handoff/test_log_file
fi
done
done
done

파일 형식: 06001234567800000009 20160226100TD22000002 04.00000.0000000000000030.000000000000028.800000 0000000000001.200000 000000 000000.4200000000000000000.4000000000000000000.020000‌​00000 0000000000000.440000‌​0000000000000.020000000000000000.0000 00 ​표준 0 221-합격률 201603075 10UW0000054321AB00000361593804INR20160226EUR0010000010000000‌​00000030.0000000000 0‌​000000.0004.000 04.00000000000000

답변1

사용 cmp:

$ cat file1.txt
This file
is the same
as the other

$ cat file2.txt
This file
is almost the same
as the other

$ cmp file1.txt file2.txt
file1.txt file2.txt differ: char 14, line 2

char 14첫 번째 문자를 나타냅니다.파일에이것은 다릅니다.

단어 차이를 시각적으로 표현하려면 다음을 사용하세요 wdiff.

$ wdiff file1.txt file2.txt
This file
is {+almost+} the same
as the other

답변2

diff명령을 사용하면 각 파일에서 어떤 줄이 다른지 확인할 수 있습니다.

diff file1.txt file2.txt

이 경우에는 다른 행이 제공됩니다.

파일 1.txt:

"same line,

same line,

different line,

same line."

파일 2.txt:

"same line,

same line,

same line,

same line."

$> diff file1.txt file2.txt

< line 3 : different line,
----------------------
> line 3 :  same line,

관련 정보