我有两个文本文件,例如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,它应该打印两个匹配的文件中的行
答案 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