2016-10-10 30 views
-3

我有两个文本文件,说FILE1.TXT包含有类似循环中FILE1.TXT在FILE2.TXT的所有行每行比较

100.145 10.0728

100.298 10.04

和file2 .TXT包含有类似

100.223 8.92739

100.209 9.04269

100.084 9.08411

100.023 9.01252

我想比较塔1和两个文件和打印匹配的第2列中,如果和FILE1.TXT在FILE2.TXT两列的差别小于或等于0.001 。

因为这两个文件没有相等的号码。或行,我希望将file1.txt的row1与file2.txt的所有行进行比较,然后它将选择file1.txt的row2并执行相同的操作,直到file1.txt的所有行都耗尽。差异应该是这样的($ 1 file1.txt - $ 1 file2.txt)和($ 2 file1.txt - $ 2 file2.txt)如果两者的差值小于或等于0.001,则应在两个文件中打印匹配的行

+1

不要求我们用“类似”的东西来工作,并产生“类似”输出。不要模糊你的要求,具体 - 向我们展示你想要一个工具的输入和你想要输入的输出。 –

+0

上次您提出这个问题时,您被要求提供预期的输出结果,因为您没有这样做,显然您没有得到满意的解决方案。请这次做。另外,有人将您的问题编辑为更易于理解的格式。请从你以前的问题看看它是如何形成现在的形式的,并将这些方法应用到这个问题上, –

回答

-1

你可以试试这个;

#!/bin/bash 

while read line; do 
while read line2; do 
    Col1F1=$(echo $line | awk '{print $1}') 
    Col1F2=$(echo $line2 | awk '{print $1}') 
    Col2F1=$(echo $line | awk '{print $2}') 
    Col2F2=$(echo $line2 | awk '{print $2}') 

     if [ ! -z "${Col1F1}" ] && [ ! -z "${Col1F2}" ]; then 

     diffCol1=$(awk '{print $1-$2}' <<< "$Col1F1 $Col1F2") 
     diffCol2=$(awk '{print $1-$2}' <<< "$Col2F1 $Col2F2") 

      if (($(echo "$diffCol1 < 0.001" |bc -l) && $(echo "$diffCol2 < 0.001" |bc -l))); then 
       echo -e ${Col1F1} "\t" ${Col2F1} "\t" ${Col1F2} "\t" ${Col2F2} "\n" 
      fi 

     fi 
done < file2.txt 
done < file1.txt 
相关问题