我的文件包含以下内容;大致:
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 file2
和comm -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 使用>
和<
>
表示旧文件中的行
<
表示新文件中旧文件中更改的行