0

我有一组值,如下所示。

-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

我想找到两者的最大值并用原始符号(负号或正号)打印结果。

例如:我需要这样的结果:

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

请让我知道执行此操作的代码。先感谢您。

4

2 回答 2

2

If$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
于 2013-09-13T15:30:40.577 回答
2

这是一个 Perl 的:

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

标志:

  • -e: 在命令行中给出一个脚本
  • -ne:在输入文件的每一行运行由给出的脚本
  • -a: 将空白处的每一行拆分为数组@F
  • -l: 自动添加一个新行 ( \n) 到每个print.
于 2013-09-13T15:39:33.053 回答