【问题标题】:Using multiline uniq output as input for grep使用多行 uniq 输出作为 grep 的输入
【发布时间】:2014-12-11 03:42:30
【问题描述】:

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

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

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

grep -Fxq "$FILENAME" blacklist.txt

当然,我需要将 "$FILENAME" 替换为 uniq 的输出,但我终生无法弄清楚如何这样做。

【问题讨论】:

    标签: macos bash unix scripting sh


    【解决方案1】:

    这对我有用。

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

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

    这个命令基本上把黑名单和

    分开了
    name1
    name2
    name3
    

    发送至 name1\|name2\|name3,以便您可以 grep 获取这些单词。

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多