【问题标题】:Sort a file with unordered columns of integers对具有无序整数列的文件进行排序
【发布时间】:2012-07-15 05:49:25
【问题描述】:

我有一个包含两列整数值的输入文件。我想这样砍输入文件

 input file:
 ...
 ...
 12312 565456
 565456 12312
 ...
 ...     

#

 output file:
 ...
 ...
 12312 565456
 ...
 ...

也就是说,如果两个数字多次出现,则在输出文件中写入一个唯一的行,其中第一个数字如果两者中较小的一个。

如何使用 sort 或 perl 脚本来完成?

【问题讨论】:

    标签: perl bash sorting


    【解决方案1】:

    你可以试试:

    perl -nale ' @F=reverse @F if($F[0]>$F[1]);                 
                 $x=$F[0]." ".$F[1]; if(!$h{$x}){print $x;$h{$x}=1;}'
    

    See it

    【讨论】:

      【解决方案2】:

      你可以结合perlsort

      perl -lne 'BEGIN { $, = " " } print sort split' infile | sort -u
      

      【讨论】:

      • 只是一个小问题:不清楚用户是否需要在删除重复项后输入列表保持当前顺序。
      【解决方案3】:
      awk -vOFS="\t" '$2<$1 {print $2,$1} $1<=$2 {print}'|sort -u
      

      也可以

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-06
        • 2017-05-05
        • 2020-08-04
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多