私はこのフォーラムに初めてアクセスし、比較する必要がある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.02000000000 000000000000000000 00 標準 0 221-合格率 201603075 10UW0000054321AB00000361593804INR20160226EUR0010000010000000000000000000000 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,