【发布时间】:2014-01-07 09:22:46
【问题描述】:
我有一个在过去 180 天内登录的用户列表和一个来自 LDAP 的总用户列表。每个列表都在文本文件中,每个名称都在自己的行中。使用 sed 或 awk,我可以从 current-users.txt 中读取脚本并从 total-users.txt 中删除,从而给我一个包含过去 180 天所有非活动帐户的文本文档吗?
提前致谢!
【问题讨论】:
我有一个在过去 180 天内登录的用户列表和一个来自 LDAP 的总用户列表。每个列表都在文本文件中,每个名称都在自己的行中。使用 sed 或 awk,我可以从 current-users.txt 中读取脚本并从 total-users.txt 中删除,从而给我一个包含过去 180 天所有非活动帐户的文本文档吗?
提前致谢!
【问题讨论】:
不需要 sed 或 awk,grep 就足够了:
grep -vf current-users.txt total-users
它返回所有在total_users 中但不在current-users.txt 中的行。
grep -f 从文件中获取参数。grep -v 反转结果。$ cat total_users
one
two
three
four
$ cat some_users
two
four
$ grep -vf some_users total_users
one
three
【讨论】:
-w 以匹配完整的单词。
使用 awk
awk 'NR==FNR{a[$1];next} !($1 in a)' current_users total_users
【讨论】: