【问题标题】:Find the hightest value in a line of a file with multlines [closed]在多行文件的一行中查找最大值[关闭]
【发布时间】:2019-06-28 08:23:26
【问题描述】:

我有一个包含不同行的文件,并希望从第二列开始在每一行中查找并输出最高值。可以在 bash 或 awk 中使用吗?

例如文件有这种格式结构

136 0.369326 0.004999 137 0.003199 0.140172 0.055189 0.047191 0.520696 0.172565 138 0.000400 0.021596 0.095381 0.179164 0.065187 ... 等等”

我想要以下输出

136 0.369326 137 0.520696 138 0.179164 ... 等等

谢谢

【问题讨论】:

  • 能否请您 edit 您的帖子并向我们展示您已经拥有的代码,并告诉我们它如何无法满足您的要求?

标签: bash perl awk


【解决方案1】:

在您标记问题的所有工具中,这当然是可能的。例如,在 Perl 中,这很简单。

但是 Stack Overflow 不是代码编写服务,而且您没有向我们证明您编写了任何代码来解决问题,所以我不会给您提供解决方案。下面是一些伪代码,您可以将其用作解决方案的设计。

WHILE you can read a line from the file
  SPLIT the input record on whitespace
  PRINT the first element of the split record
  CALCULATE the maximum value of the remaining element
  PRINT the maximum value
END WHILE

所以你需要知道如何做以下事情:

  • 从文件中读取数据记录
  • 在空格处分割字符串
  • 打印数据
  • 在值列表中查找最大值

【讨论】:

    【解决方案2】:

    正如您为 Perl 标记的那样:

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    use List::Util qw(max);
    
    while (<DATA>) {
        chomp;
        my($key, @numbers) = split(/\s+/);
        print "${key}\t", max(@numbers), "\n";
    }
    
    __DATA__
    136   0.369326 0.004999
    137   0.003199 0.140172 0.055189 0.047191 0.520696 0.172565
    138   0.000400 0.021596 0.095381 0.179164 0.065187
    

    试运行:

    $ perl dummy.pl
    136     0.369326
    137     0.520696
    138     0.179164
    

    【讨论】:

    • 您好,谢谢大家的帮助。我用 bash 和 awk 标记了 perl 语言,因为我认为找到解决我的简单问题的方法会更容易。我不是程序员(但我尽量使用我所知道的 bash / awk 语言或可能的 fortran 语言)。通过给我带来你对 perl 方法的帮助,你帮助了我很多,更重要的是我学到了。如果我有另一个类似的同类问题,你写给我的代码将对我有所帮助。再次感谢您
    【解决方案3】:

    Perl 单行

    $ cat stephane.txt
    136   0.369326 0.004999
    137   0.003199 0.140172 0.055189 0.047191 0.520696 0.172565
    138   0.000400 0.021596 0.095381 0.179164 0.065187
    
    $ perl -lane ' @x=sort {$a<$b} @F[1..$#F]; print "$F[0] $x[0]" ' stephane.txt
    136 0.369326
    137 0.520696
    138 0.179164
    
    $
    

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 2013-06-14
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2013-04-19
      相关资源
      最近更新 更多