【问题标题】:How to sort content of a file in-place by a column?如何按列对文件的内容进行就地排序?
【发布时间】:2010-11-08 15:44:48
【问题描述】:


我有一个文件,它有多个列,空格分隔。 例如:

数据1 数据2 数据3 数据4 val1 val2 val3 val4

我需要根据不同列中的值对文件进行排序,即有时基于列 1 的值有时基于 col2 的值等等。

我想到了 sort 命令,但不知道如何使用它来完成此操作。

谢谢,

【问题讨论】:

  • 所以您想找到正确的 Unix 命令或以编程方式执行它,比如 C?

标签: linux file sorting


【解决方案1】:

如果你放弃就地排序很容易:

sort -k 1 original > by_col_1
sort -k 2 original > by_col_2

【讨论】:

  • thanx,,, 这是 -k 选项.. 还有一件事可以使用除空格以外的列分隔符..
【解决方案2】:

排序具有对“键”的内置理解,“键”是用于进行比较的行的一部分。默认情况下,键是整行,但可以使用-k 选项进行更改:

示例:要对第二个字段进行排序,请使用--key=2,2' (-k 2,2')。

默认情况下,键由非空白字符和空白字符之间的过渡分隔。

【讨论】:

    【解决方案3】:

    要对文件进行就地排序,请尝试 vim-way:

    $ ex -s +'%!sort -k1' -cxa file.txt
    

    也可以使用-o 参数,如sort -k1 in.txt -o out.txt

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      相关资源
      最近更新 更多