如何对包含特定单词的行的列进行排序

veh*_*zzz 12 vim

我想仅对包含特定单词的行对某列进行排序.我不希望看到不包含该字的行.例如,我有这个文本文件:

 sdf ggfds   7
 sdf sgs     5
 sdf dfgs    3
 foo dffg    2
 bar dffg    2
 sdf sddfg   4
Run Code Online (Sandbox Code Playgroud)

我想为仅包含"sdf"字的行排序第3列(不必在第一列中)

我希望看到这个输出:

 sdf dfgs    3
 sdf sddfg   4
 sdf sgs     5
 sdf ggfds   7
Run Code Online (Sandbox Code Playgroud)

小智 16

将输入传递给外部命令:

:%!grep sdf | sort -n -k3
Run Code Online (Sandbox Code Playgroud)

细节:

  1. 使用'%'选择整个内容
  2. 使用'!'将它传递给外部命令
  3. grep onyl包含'sdf'的行
  4. 在第三个字段(-k3)上以数字(-n)对这些行进行排序


Max*_*Kim 8

2个vim命令:

:v/sdf/d
:sort n /[^[:digit:]]*/
Run Code Online (Sandbox Code Playgroud)
  • 首先删除所有不包含'sdf'的行
  • 第二种是忽略非数字的数字