我试图打印两个连续的行(浮点数),它们的符号相反(+/-)。例如,如果我有这个:
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处理它的最佳方法是什么。
答案 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