저는 이 포럼을 처음 접했고 비교해야 할 두 개의 파일이 있습니다. 파일에는 구분 기호가 없고 데이터가 위치에 있으므로 각 문자를 한 줄씩 비교해야 합니다. 아래 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.02000000000 0000000000000.4400000000000000000.020000000000000000.0000 00 표준 0 221-합격률 201603075 10UW0000054321AB00000361593804INR20160226EUR001000001000000000000030.0000000000 0000000.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,