逐行比较:unix中的两个文件

时间:2016-03-22 14:28:34

标签: file unix

PFB情景。我有两个文件

文件1

firstName1 LastName1
FirstName2 LastName2

文件2

FirstName1 LastName1
FirstName2 LastName2

现在我想比较file1的FirstName1和file2的FirstName1。如果匹配,则将file1的LastName1与File2的LastName1进行比较。

如果这些值中的任何一个不是马赫,则应将记录写入日志文件。

完成此操作后,请转到第二条记录。

有人可以对此有所了解......

2 个答案:

答案 0 :(得分:0)

使用以下标准unix命令

diff
sdiff

这个page也有助于理解diff和sdiff之间的区别。

您还可以编写脚本来比较2个文件中的记录。

答案 1 :(得分:0)

diff是你想要做的最好的,但如果你想在这种情况下做更多的动作,假设文件格式正确,这里有一个片段

./compare.sh <file1> <file2>

compare.sh:

#!/bin/bash

line_number=0

cat $1 | while read line_f1; do

    line_number=$((line_number + 1))

    line_f2=$(cat $2 | sed "${line_number}q;d")

    echo "line f1 : ${line_f1}"
    echo "line f2 : ${line_f2}"

    firstname_f1=$(echo ${line_f1} | cut -f1 -d' ')
    firstname_f2=$(echo ${line_f2} | cut -f1 -d' ')
    lastname_f1=$(echo ${line_f1} | cut -f2 -d' ')
    lastname_f2=$(echo ${line_f2} | cut -f2 -d' ')

    echo "firstname f1 : ${firstname_f1}"
    echo "firstname f2 : ${firstname_f2}"
    echo "lastname f1 : ${lastname_f1}"
    echo "lastname f2 : ${lastname_f2}"

    if [ ! "${firstname_f1}" = "${firstname_f2}" ]; then
        echo "Differents Firstnames"
    fi

    #... place here other tests ...

done