找到最大幅度并打印出来

时间:2013-09-13 14:29:56

标签: shell

我有一组值,如下所示。

-4.904045E+04   3.972944E+04
-1.205839E+05   3.662380E+04
-1.950760E+04   1.020331E+01
-1.128968E-01   1.129738E+05
-8.031810E+01   1.466682E+05
-4.914462E+04   2.353826E+03
-4.020837E+04   3.524823E+01
-3.058178E+03   1.234481E+04

我想找到两者的最大幅度,并用原始符号(nagative或positive)打印结果。

Ex:我需要这样的结果:

-4.904045E+04
-1.205839E+05
-1.950760E+04
1.129738E+05
1.466682E+05
-4.914462E+04
-4.020837E+04
1.234481E+04

请告诉我执行此操作的代码。 先感谢您。

2 个答案:

答案 0 :(得分:2)

如果$1始终为负数且$2始终为正数:

awk '{print(-$1>$2?$1:$2)}' < your-file

如果不是:

awk 'function abs(x) {return (x<0?-x:x)}
     {print(abs($1)>abs($2)?$1:$2)}' < your-file

答案 1 :(得分:2)

这是一个Perl:

perl -alne 'abs($F[0])>abs($F[1]) ? print $F[0] : print $F[1]' < file

标志:

  • -e:在命令行中提供一个脚本
  • -n:在输入文件的每一行上运行e给出的脚本
  • -a:将空白处的每一行拆分为数组@F
  • -l:自动为每个\n添加一个新行(print)。