我正在寻找最有效的方法。我有7个单独的文件需要过滤。
这是我开始第一次的方式,但请记住,我需要再做6次。
While read line do;
Onenum="$(awk '{print $12}' file.txt)"
Onenumssum="$(oneadd="$(tail + n 1 num2.txt)" && echo $onenum + $onenumadd | bc
Onenumdiff="$(onesub="$(tail - n 1 num2.txt)" && echo $onenum - $1sub | bc
if [ "$line" -ge "$onenumdiff" -a -le "$onenumsum" ]; then
然后$ line如果合格则需要推送保存文件
文件到文件管理器看起来像:
655.5
600
654
650
656
655
672
657
655
671
Ect.
我想浏览一下这个文件并查找以+或 - 1为655的数字,以便输出文件看起来像
654
655.5
655
655
656
答案 0 :(得分:0)
假设:
$ cat file
655.5
600
654
650
656
655
672
657
655
671
您可以使用目标的容差和绝对值差异进行过滤:
$ awk -v tgt=655 -v tol=1 'function abs(v) {return v < 0 ? -v : v}
abs($1-tgt)<=tol {print $1}' file
655.5
654
656
655
655
然后将该输出重定向到所需的文件:
$ awk -v tgt=655 -v tol=1 'function abs(v) {return v < 0 ? -v : v}
abs($1-tgt)<=tol {print $1}' file > filtered