菜鸟科技网

vf筛选命令如何高效使用?

vf 是一个非常强大且灵活的命令行工具,全称是 view filter(视图过滤器),它允许你从任何命令的输出、文件或标准输入中,以交互式的方式筛选、排序、搜索、预览和操作数据,你可以把它想象成一个“活”的 grep + sort + less + jq 的组合体。

vf筛选命令如何高效使用?-图1
(图片来源网络,侵删)

核心特点

  • 交互式:不像 grep 那样执行一次就结束,vf 启动后会进入一个交互式界面,你的所有操作都会实时反映在视图上。
  • 即时反馈:你输入的任何筛选条件都会立即生效,让你可以快速探索和定位数据。
  • 功能丰富:支持正则表达式、模糊搜索、排序、列操作、执行外部命令等。
  • 通用性强:可以处理任何文本数据,无论是命令输出、日志文件还是 JSON/CSV 数据。

安装

vf 通常不是系统默认自带的,你需要先安装它。

  • macOS (使用 Homebrew)

    brew install vf
  • Linux (使用 APT)

    # 对于 Debian/Ubuntu
    sudo apt update
    sudo apt install vf
  • 从源码安装

    vf筛选命令如何高效使用?-图2
    (图片来源网络,侵删)
    git clone https://github.com/lotabout/vf.git
    cd vf
    cargo install --path .

基本用法

vf 的基本语法非常简单:

# 从文件中筛选
vf filename.txt
# 从命令的输出中筛选
some_command | vf
# 直接在 vf 中输入文本进行测试
echo -e "apple\nbanana\ncherry\n123\nabc" | vf

启动 vf 后,你会看到一个类似下面这样的界面:

# vf - Interactive Filter
# Press ? for help
--- Match All ---
apple
banana
cherry
123
abc
---

核心交互命令

vf 的交互界面中,你可以使用以下快捷键和命令。输入 或 h 可以随时查看帮助。

搜索和筛选

这是 vf 最核心的功能。

vf筛选命令如何高效使用?-图3
(图片来源网络,侵删)
命令/快捷键 描述 示例
(正则搜索) 进入正则表达式搜索模式,输入 /pattern 来筛选包含该模式的行。 /app (筛选包含 "app" 的行)
f (模糊搜索) 进入模糊搜索模式,输入 f<your_text> 来筛选包含这些字符的行,顺序不重要。 fap (会匹配 "apple", "grape", "pineapple" 等)
F (反向模糊) 反向模糊搜索,筛选不包含这些字符的行。 Fap (会匹配 "banana", "cherry" 等)
Ctrl-u 清空当前搜索框,显示所有行。

导航和选择

命令/快捷键 描述
j / 向下移动光标。
k / 向上移动光标。
Ctrl-d / Ctrl-f 向下翻页。
Ctrl-u / Ctrl-b 向上翻页。
gg / Home 跳到第一行。
G / End 跳到最后一行。
v 切换选择模式,进入选择模式后,可以用 j/k 来选择多行,再次按 v 退出选择模式。
Ctrl-a 全选所有匹配的行。
Ctrl-x 取消所有选择。

执行操作

当你选择好想要的行后,可以执行各种操作。

命令/快捷键 描述
Enter 确认并退出,将当前选中的行(如果没有选择,则为光标所在行)输出到标准输出,vf 退出,这是最常用的操作。
y 复制,将选中的行复制到系统剪贴板。
d 删除,从视图中删除选中的行(不会影响原始文件)。
执行外部命令,将选中的行作为参数,执行一个外部命令。!git checkout 会对所有选中的行执行 git checkout <line_content>
c 修改,进入编辑模式,可以修改当前行的内容。
q 退出,不进行任何操作,直接退出 vf

视图和模式切换

命令/快捷键 描述
m 切换匹配模式,在 "Match All" (显示所有) 和 "Match" (只显示匹配) 之间切换。
进入 Ex 模式,类似于 Vim,可以执行一些更复杂的命令,sort (排序)、delete (删除行) 等,输入 后按 Enter 查看可用命令。
s 切换排序,对当前视图进行排序。
w 写入文件,将当前视图的内容保存到一个文件中。

实战示例

示例 1:筛选 ps 命令的输出

你想查找所有包含 "node" 关键字的进程,并杀掉它们。

ps aux | vf
  1. 启动 vf 后,输入 /node 进行正则搜索。
  2. 你会看到所有包含 "node" 的进程被筛选出来。
  3. Ctrl-a 全选这些行。
  4. 按 键,然后输入 kill -9
  5. vf 会提示你将要执行 kill -9 <pid>,确认后,所有选中的 Node.js 进程都会被终止。

示例 2:在日志文件中快速定位错误

你有一个巨大的 error.log 文件,想找到所有 "ERROR" 级别且包含 "timeout" 的日志。

cat error.log | vf
  1. 输入 /ERROR 筛选出所有 ERROR 级别的日志。
  2. 输入 ftimeout 进行模糊搜索,进一步筛选出包含 "timeout" 的日志。
  3. 使用 j/k 浏览结果,找到你关心的那条日志。
  4. Enter 退出,vf 会把这一行输出到终端,方便你复制或进一步处理。

示例 3:处理 CSV/JSON 文件

假设你有一个 users.csv 文件,内容如下:

name,age,city
Alice,25,New York
Bob,30,Los Angeles
Charlie,22,Chicago
David,35,New York

你想找到所有年龄大于 30 岁的用户。

cat users.csv | vf
  1. 输入 /,[0-9]{2}, 来查找年龄是两位数的行(这只是一个示例,更复杂的筛选可能需要 命令)。
  2. 更好的方式是使用 命令,输入 /,([3-9][0-9]),,这个正则表达式会匹配年龄在 30-99 之间的行。
  3. Enter 执行,符合条件的行(David)会被筛选出来。
  4. Enter 退出,即可得到结果。

vf 是一个能极大提升你在命令行下处理数据效率的工具,它的交互式特性让你可以“对话式”地探索数据,而不是像传统工具那样“一次性”地处理。

学习建议:

  1. 先安装它。
  2. echo "hello\nworld\nvf\nis\ngreat" | vf 试试水。
  3. (正则), f (模糊), v (选择), Enter (确认), q (退出) 这几个核心操作。
  4. 在日常工作中,多用它来 grep 文件、筛选 ps 输出、查看日志,很快你就会离不开它。
分享:
扫描分享到社交APP
上一篇
下一篇