sed读取一个文件并删除第二个文件中的模式

时间:2014-01-07 09:22:47

标签: bash sed awk grep

我有一个在过去180天内登录的用户列表以及来自LDAP的总用户列表。每个列表都在文本文件中,每个名称都在自己的行中。使用sed或awk,我可以从current-users.txt读取一个脚本并从total-users.txt中删除,以便为我提供一个包含过去180天所有非活动帐户的文本文档吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

无需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

答案 1 :(得分:1)

使用awk

awk 'NR==FNR{a[$1];next} !($1 in a)' current_users total_users