hcsu
V2EX  ›  问与答

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

  •  
  •   hcsu · Dec 26, 2021 · 1701 views
    This topic created in 1600 days ago, the information mentioned may be changed or developed.
    我把一些常用的命令写在文件 abc 里,想用 fzf 做成交互式的选项,希望 fzf 之后这些选项可以自动根据使用频率进行排序,把常用的排到前面(像 z.lua )。请问有什么比较简单的方法可以实现吗?
    (似乎 sort 只能针对固定的顺序排序,不能自己学习以后自动调整顺序)

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