使用multiline uniq输出作为grep的输入

时间:2014-10-15 22:22:10

标签: macos bash unix scripting sh

我正在使用以下行打印多次登录的用户列表(编辑)我刚刚意识到这实际上并不起作用):

who | grep -Eo '^[^ ]+' | sort | uniq

问题是,我只想打印名称也存在于文本文件中的用户。我对脚本(和一般的Unix)相对较新,所以也许我只是一个巨大的假人,但根据我的推理,最简单的方法是使用uniq的输出作为输入我在另一个答案中找到了这一行:

grep -Fxq "$FILENAME" blacklist.txt

当然,我需要将"$FILENAME"替换为uniq的输出,但我不能在我的生活中解决如何来执行此操作。

1 个答案:

答案 0 :(得分:1)

这适合我。

who | grep -Eo '^[^ ]+' | sort | uniq | grep -w "$(cat blacklist.txt | xargs | sed 's| |\\\||g')"

我的blacklist.txt每行有一个用户ID

此命令基本上将黑名单与

分开
name1
name2
name3

name1\|name2\|name3,这样你就可以只为这些词而烦恼。