Bash 脚本:比较两个文本文件

Bash 脚本:比较两个文本文件

我想知道如何有效地做到这一点。给定两个文件,例如 a.txt 和 b.txt,我想编写一个 bash 脚本来执行以下操作:

a.txt 中每一行包含 '*',而在 b.txt 中不存在的行都将添加到 b.txt 的末尾,并带有时间戳。

我可以完成第一部分和最后一部分, grep "*" a.txt echo "$(date)" >> b.txt 但我不知道其余部分怎么办。

答案1

我建议您使用第三个文件来获取结果,这样您就不会弄乱 b.txt 文件。您可以尝试以下操作:

cp b.txt c.txt 
for line in $(grep '*' a.txt); do
    # for each line found in a.txt
    echo "Found: $line"
    grep -q $line b.txt   # check its presence in b.txt
    if [ $? -ne 0 ]; then
        # if the result of the grep is not equal to 0
        # it means that the line has not been found in b.txt
        # then print the line in a third file with the leading timestamp
        echo "$(date): $line" >> c.txt
    fi
done

很明显,也许你应该改进 grep,因为我不知道你搜索的“*”的行是如何组成的。

相关内容