как сравнить значения в двух столбцах в двух различных файлах, повторив сплошные линии, где абсолютное значение различия является <маленьким максимальным значением?

При игнорировании эффективности вот подход:

declare -a intersect
declare -a b_only
for bvol in "${B[@]}"
do
    in_both=""
    for avol in "${A[@]}"
    do
        [ "$bvol" = "$avol" ] && in_both=Yes
    done
    if [ "$in_both" ]
    then
        intersect+=("$bvol")
    else
        b_only+=("$bvol")
    fi
done
echo "intersection=${intersect[*]}"
echo "In B only=${b_only[@]}"
2
05.12.2014, 23:46
2 ответа
awk '
  function abs(v) {
    return (v < 0 ? -v : v)
  }
  {l1=$0; f6_1=$6; getline < "file2"; l2=$0; f6_2=$6}
  abs(f6_1 - f6_2) < 0.001 {print l1 "\n" l2 "\n"}' file1
3
27.01.2020, 22:00

Я бы предварительно обрабал с вставки , чтобы перекрестите линии, а затем подавать в awk

paste -d '\n' file1 file2 |
awk -v threshold=0.001 'NR % 2 {a=$6; b=$0; next};
$6 - a > -threshold && $6 - a  <threshold {print b; print ""; print $0}'
1
27.01.2020, 22:00

Теги

Похожие вопросы