如何在同一字段中查找/打印两个连续的相反符号的浮点数?

时间:2019-05-24 15:39:53

标签: awk

我试图打印两个连续的行(浮点数),它们的符号相反(+/-)。例如,如果我有这个:

 8.00
 89.11
-21.42
-1.98
-44.23
 23.72
 34.21
 56.72
-65.82
-37.49
-23.41

我要打印:

 89.11
-21.42
-44.23
 23.72
 56.72
-65.82

我想知道使用awk处理它的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

赞:

awk 'NR>1&&(p<0&&$0>=0||p>=0&&$0<0){print p;print $0}{p=$0}' file

我正在使用变量p存储上一行。从第2行开始,我正在检查(p<0&&$0>=0||p>=0&&$0<0)

注意:在上述解决方案中,我将0视为正值。

答案 1 :(得分:1)

$ awk '{cV=($0<0)} (NR>1) && (pV!=cV){print p0 ORS $0} {p0=$0; pV=cV}' file
 89.11
-21.42
-44.23
 23.72
 56.72
-65.82