如何输出两个文件之间的差异?

如何输出两个文件之间的差异?

我的文件包含以下内容;大致:

username:username:username:username:username 

上面一行大约有 600 个字符。

我使用该awk命令是为了将其用作从命令行发送的 API/HTTP 请求中的参数。

我正在使用我的脚本来获取“关注”我的用户帐户列表,大约每隔 24 小时,将硬盘上的原始列表与新输出的用户名列表进行比较(以及回声谁不再关注我。我必须使用 bash 将我的逻辑封装到一个循环中。测试每个用户名。

我当前的脚本:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

我的问题是;
如何输出两个文件之间的差异?

答案1

给定两个包含未排序用户列表的文件,例如

In file1:
    userD
    user3
    userA
    user1
    userB

In file2:
    user3
    userB
    userX
    user1

file1然后要获取 中但不在 中的用户的简单列表file2,您可以这样做

$ comm -23 <(sort file1) <(sort file2)
userA
userD

类似地让用户进入file2但不进入file1

$ comm -13 <(sort file1) <(sort file2)
userX

如果列表文件已经排序,则可以分别简化为comm -23 file1 file2comm -13 file1 file2

答案2

您正在寻找的实用程序是diff.查看手册了解详细信息。

答案3

查看文件内容差异的最佳命令是

vim -d file1 file2

答案4

fc你可以在Unix和Linux中尝试相同的windows like命令和iediff <file_new> <file_old>命令。

与它们+++---前面的行已更改,而没有+'s且未-'s更改的行

带符号的行将-从新文件中删除,但它们在旧版本中存在

带符号的行+是从新文件中添加的,但它们在旧版本的文件中不存在

Linux 表示法

Linux 使用><

>表示旧文件中的行 <表示新文件中旧文件中更改的行

相关内容