2つのファイルを逐語的に比較する方法と違いが発生した行と場所を表示する必要があります。

2つのファイルを逐語的に比較する方法と違いが発生した行と場所を表示する必要があります。

私はこのフォーラムに初めてアクセスし、比較する必要がある2つのファイルがあります。ファイルには区切り文字がなくデータが場所にあるため、各文字を1行ずつ比較する必要があります。以下の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.000000000000030.0000000000000000000000 000000.4200000000000000000.40000000000000000.020000‌00000 000000000000000000 00 標準 0 221-合格率 201603075 10UW0000054321AB00000361593804INR20160226EUR0010000010000000‌000000000000000 4.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,

関連情報