2016-10-10 10 views
-3

を比較するためのFILE2.TXTのすべての行を超えるFILE1.TXT内の各行をループFILE1.TXTがは、私は2つのテキストファイルを持っている

100.145 10.0728

100.298 10.04

とfile2のようなものが含まれていると言います.txtファイルは

100.223 8.92739

100.209 9.04269

のようなものが含まれています

100.023 9.01252

100.084 9.08411

FILE1.TXT中とFILE2.TXTで両方の列の差が小さいか0.001に等しい場合、私は、カラム1とファイルと印刷の試合の両方の列2を比較したいです。

両方のファイルに等しい番号がないためです。 file1.txtのrow1をfile2.txtのすべての行と比較したい場合は、file1.txtのrow2を選択し、file1.txtのすべての行が使い果たされるまで同じ処理を行います。違いが両方の違いが0.001より小さい場合は、一致するファイルの両方の行を印刷する必要があります。

+1

あなたの入力と同じようなことをして、あなたの出力のようなものを作り出すことを私たちに求めないでください。あなたの要件について漠然としていない、具体的に - あなたがツールを働かせたい入力とその入力を与えたい出力を表示してください。 –

+0

最後にこの同じ質問をしました。あなたは期待される出力を提供するように求められましたが、そうしなかったように、あなたは喜ばしい解決策を得られなかったようです。今回はやってください。また、あなたの質問を理解しやすい形式に編集しました。あなたの以前の質問から、それが現在の形にどのように形作られたのかを見て、それらの方法をこの質問にも適用してください。 –

答えて

-1
($ 1 file1.txt - $ 1 file2.txt)と($ 2 file1.txt - $ 2 file2.txt)

これを試すことができます。

#!/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 
関連する問題