gpt4 book ai didi

regex - 使用 sed 打印每个匹配模式的第一行出现

转载 作者:太空狗 更新时间:2023-10-29 12:12:44 25 4
gpt4 key购买 nike

我想根据一组可变的用户名过滤实用程序的输出。

这是上次未过滤的示例输出,

reboot   system boot  server   Wed Apr  6 13:15 - 14:24  (01:09)    
user1 pts/0 server Wed Apr 6 13:08 - 13:15 (00:06)
reboot system boot system Wed Apr 6 13:08 - 13:15 (00:06)
user1 pts/0 server Wed Apr 6 13:06 - down (00:01)
reboot system boot system Wed Apr 6 13:06 - 13:07 (00:01)
user1 pts/0 server Wed Apr 6 12:59 - down (00:06)

我想做的是将 last 的输出通过管道传递给 sed。然后,使用 sed 我将打印每个指定用户名的第一次出现,即他们在 wtmp 中的最后一个日志条目。输出应该是这样的,

 reboot   system boot  server   Wed Apr  6 13:15 - 14:24  (01:09)    
user1 pts/0 server Wed Apr 6 13:08 - 13:15 (00:06)

我特别喜欢的sed表达式是,

last|sed '/user1/{p;q;}'

不幸的是,这只能让我匹配一个用户名的第一次出现。使用此语法是否可以指定多个用户名?提前致谢!

最佳答案

awksed 更适合这里,因为 awk 能够使用关联数组:

last | awk '!seen[$1]++'

reboot system boot server Wed Apr 6 13:15 - 14:24 (01:09)
user1 pts/0 server Wed Apr 6 13:08 - 13:15 (00:06)

关于regex - 使用 sed 打印每个匹配模式的第一行出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36700988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com