我有两个文件如下。我想比较并知道两个文件中的两行是否相同。
file1.txt:
4162 8171.0 2.00 F NULL NULL 25.630 2010-05-05
256 45.2 5.00 N NULL NULL 16.098 2011-11-20
file2.txt:
4162 8171.0 2.00 F NULL NULL 25.630 2010-05-05
561 41.0 10.00 N NULL NULL 16.098 2011-11-20
我使用awk命令使用下面的代码。
rownum=1
cat file1.txt | while read -r LINE || [[ -N $line ]];
do
row_same=`awk "/$LINE/ {print ;} " file2.txt;
if [[ "$row_same" = '' ]]
then
echo "row $rownum is Not matching "
else [[ "$row_same" != "$LINE" ]]
then
echo "row $rownum is Not Matching "
fi
rownum=$((rownum+1))
done
预期产出:
Row 2 is not Matching
实际输出"
Row 1 is not Matching
Row 2 is not Matching.
请帮助我,为什么这不起作用。
答案 0 :(得分:0)
diff
是一个很好的做法,但是如果你想从两个文件中逐行阅读,你甚至不需要使用awk
。
count=0
while IFS= read -r lineA && IFS= read -r lineB <&3
do count=`expr $count + 1`
if [ "$lineA" != "$lineB" ]; then
echo "Line $count is not matching"
fi
done <file1.txt 3<file2.txt
答案 1 :(得分:0)
使用diff
diff -y file1.txt file2.txt
4162 8171.0 2.00 F NULL NULL 25.630 2010-05-05 4162 8171.0 2.00 F NULL NULL 25.630 2010-05-05
256 45.2 5.00 N NULL NULL 16.098 2011-11-20 | 561 41.0 10.00 N NULL NULL 16.098 2011-11-20
这里显示第2行有差异,用符号|