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

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

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

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