2016-10-10 91 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 
相關問題