V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hcsu
V2EX  ›  问与答

不懂就问:如何对 cat abc | fzf 出来的结果按照 Frequency 自动进行排序?

  •  
  •   hcsu · 2021-12-26 10:59:58 +08:00 · 1128 次点击
    这是一个创建于 823 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我把一些常用的命令写在文件 abc 里,想用 fzf 做成交互式的选项,希望 fzf 之后这些选项可以自动根据使用频率进行排序,把常用的排到前面(像 z.lua )。请问有什么比较简单的方法可以实现吗?
    (似乎 sort 只能针对固定的顺序排序,不能自己学习以后自动调整顺序)

    先谢谢!🙏
    5 条回复    2021-12-27 11:37:58 +08:00
    mcfog
        1
    mcfog  
       2021-12-26 11:30:53 +08:00 via Android
    1.每次执行命令前把命令本身记录到一个 history 文件
    2.cat abc history | sort | uniq -c | sort -n2k 后(按次数排序)再喂给 fzf
    3. 得到的结果也会后面多个次数自己处理掉
    Kobayashi
        2
    Kobayashi  
       2021-12-26 11:36:01 +08:00 via Android
    做不到。fzf 只是一个交互式选择器,负责匹配并处罚动作。
    kidonng
        3
    kidonng  
       2021-12-26 13:49:15 +08:00 via Android
    一个简单的办法:
    1. 设置环境变量 $HISTCONTROL 为 erasedups ( fish 不用)
    2. 设置环境变量 $HISTFILE 为单独用来放常用命令的文件( fish 是 $fish_history )
    3. 开一个使用上述环境的新 shell ,启动 fzf 搜索 shell 命令历史
    Jooooooooo
        4
    Jooooooooo  
       2021-12-26 16:47:52 +08:00
    直接把 "word 频率" 输出到另外一个文件里然后对这个新的文件的第二列频率排序就行
    hcsu
        5
    hcsu  
    OP
       2021-12-27 11:37:58 +08:00
    @mcfog @Kobayashi @kidonng @Jooooooooo
    谢谢各位大佬提供的思路,很受用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3242 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:52 · PVG 21:52 · LAX 06:52 · JFK 09:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.