【发布时间】:2021-12-28 06:56:17
【问题描述】:
我有以下文件,我们称之为user.txt:
2020/06/30 22:02:58 > [+] VALID USERNAME: admin@spookysec.local
2020/06/30 22:03:58 > [+] VALID USERNAME: admin-svc@spookysec.local
2020/06/30 22:04:58 > [+] VALID USERNAME: backup@spookysec.local
2020/06/30 22:05:58 > [+] VALID USERNAME: harry@spookysec.local
2020/06/30 22:06:58 > [+] VALID USERNAME: wrgwrsd@spookysec.local
2020/06/30 22:07:58 > [+] VALID USERNAME: brssdb@spookysec.local
2020/06/30 22:09:58 > [+] VALID USERNAME: a@spookysec.local
2020/06/30 22:10:58 > [+] VALID USERNAME: adm@spookysec.local
2020/06/30 22:11:58 > [+] VALID USERNAME: admifdfdsn@spookysec.local
我想删除每一行的多个模式,只获取每行一个用户名的用户名(例如 admin、admin-sv)。 我尝试了两个单独的 sed,效果很好,
sed -r 's/.{16}$//' user.txt > user2.txt
然后
sed -r 's/.{42}//' user2.txt > user3.txt
但我认为有一种更快更性感的方式来做到这一点。
尤其是这个命令
sed -r 's/(@\D+)$//' user.txt > user2.txt
不起作用。我想删除@和以后的每个字符...
有没有人知道我做错了什么以及可能的解决方案?如果我可以使用 sed 或 grep 达到我的目标,那将是最好的。
【问题讨论】: