我有一个日志文件,其中的行填充了这样的内容:
/home/Users/b/biaxib/is-clarithromycin-effective-against-strep.html
/home/Users/b/hihi/low-cost-biaxin-free-shipping.html
/home/Users/b/hoho/no-script-biaxin-fast-delivery.html
/home/Users/b/ihatespam/no-script-low-cost-biaxin.html
我想只提取用户名部分,然后删除重复项,以便我只留下这个:
biaxib
hihi
hoho
ihatespam
规则集是:
有人可以帮我解决如何创建这样的脚本或声明吗?
答案 0 :(得分:1)
假设用户名始终显示在路径的第4个组成部分:
$ cat test.txt
/home/Users/b/biaxib/is-clarithromycin-effective-against-strep.html
/home/Users/b/hihi/low-cost-biaxin-free-shipping.html
/home/Users/b/hoho/no-script-biaxin-fast-delivery.html
/home/Users/b/ihatespam/no-script-low-cost-biaxin.
$ cat test.txt | cut -d/ -f 5 | sort | uniq
biaxib
hihi
hoho
ihatespam
答案 1 :(得分:0)
cat /path/to/your/log/file.txt | python3 -c '
import sys
for line in sys.stdin.readlines():
print( line.split("/")[5] )
' | sort | uniq
可能在perl或其他内置工具中可以实现更简洁(参见其他答案),但我个人回避标准的linux文本操作工具(编辑:cut
虽然是有用的。)