我有一组值,如下所示。
-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
请告诉我执行此操作的代码。 先感谢您。
答案 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
)。