将file1.txt中的每一行循环到file2.txt的所有行以进行比较

时间:2016-10-10 08:39:46

标签: python awk

我有两个文本文件,例如file1.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

如果file1.txt和file2.txt中两列的差异小于或等于0.001,我想比较两个文件的第1列和第2列并打印匹配。

因为两个文件都没有相同的号码。或者我希望将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