我必须编辑具有多行的多个文件,而且所有内容都在三列中,如下所示:
#file
save get go
go save get
rest place reset
列用制表符分隔。有没有可能使用vi根据第二列或第三列对行进行排序的方法?
我必须编辑具有多行的多个文件,而且所有内容都在三列中,如下所示:
#file
save get go
go save get
rest place reset
列用制表符分隔。有没有可能使用vi根据第二列或第三列对行进行排序的方法?
按第二列排序:
:sor /\t/
按第 3 列排序:
:sor /\t[^\t]*\t/
第二栏:
:sort /\%9c/
第三栏:
:sort /\%16c/
\%16c
表示“第 16 栏”。
嗨,用“V”命令点亮要排序的行
使用带有“!”的 bash 命令 进行选择,例如:
!sort -k 10
其中数字是您的第二个(排序)列开始的列号。
vi 将用排序命令的输出替换选择 - 这是给定的原始选择。
您可以为sort
. 例如:
sort /^\w*\s*/
将在第二列排序(匹配模式后首先排序)。
同样地
sort /^\w*\s*\w*\s*/
应该在第三列排序。
我在这里使用一些字符来分隔列 | 符号作为分隔符,一旦这样做,您可以使用下面的命令对特定列进行排序,如果您想对数字进行排序,并且它在某些版本的 vi 上工作而不是在 ubuntu vi 上工作,请使用 -n :(
/|.*|/ | 种类