3

我必须编辑具有多行的多个文件,而且所有内容都在三列中,如下所示:

#file

save    get    go
go      save   get
rest    place  reset

列用制表符分隔。有没有可能使用vi根据第二列或第三列对行进行排序的方法?

4

5 回答 5

4

按第二列排序:

:sor /\t/ 

按第 3 列排序:

:sor /\t[^\t]*\t/   
于 2013-03-20T15:09:58.303 回答
1

第二栏:

:sort /\%9c/

第三栏:

:sort /\%16c/

\%16c表示“第 16 栏”。

于 2013-03-20T15:07:09.323 回答
0
  1. 嗨,用“V”命令点亮要排序的行

  2. 使用带有“!”的 bash 命令 进行选择,例如:

    !sort -k 10

其中数字是您的第二个(排序)列开始的列号。

vi 将用排序命令的输出替换选择 - 这是给定的原始选择。

于 2013-03-20T14:58:38.347 回答
0

您可以为sort. 例如:

sort /^\w*\s*/

将在第二列排序(匹配模式后首先排序)。

同样地

sort /^\w*\s*\w*\s*/

应该在第三列排序。

于 2013-03-20T15:00:55.747 回答
0

我在这里使用一些字符来分隔列 | 符号作为分隔符,一旦这样做,您可以使用下面的命令对特定列进行排序,如果您想对数字进行排序,并且它在某些版本的 vi 上工作而不是在 ubuntu vi 上工作,请使用 -n :(

/|.*|/ | 种类

于 2014-01-02T18:20:08.593 回答