Фильтрация файла .txt с использованием регулярного выражения и второго файла

Вы также можете проверить значения следующим образом:

$ fat=5.3
$ slim=5.3
$ echo $fat'>'$slim | bc -l
0
$ echo $fat'>'$slim | bc -l
0
$ echo $fat'=='$slim |bc -l
1

Выход:0= ложь и 1= истина

0
14.07.2019, 15:22
1 ответ

Предполагая, что вы имеете в виду <=вместо <, поскольку 1<1<12— это , а неYES:

$ cat tst.awk
NR==FNR {
    cnt[$2]++
    beg[$2,cnt[$2]] = $3
    end[$2,cnt[$2]] = $4
    next
}
{
    out = ""
    for (i=2; i<=NF; i++) {
        split($i,parts,/:/)
        key = parts[1]
        for (j=1; j<=cnt[key]; j++) {
            if ( (beg[key,j] <= parts[2]) && (parts[2] <= end[key,j]) ) {
                out = out OFS $i
                break
            }
        }
    }
    if ( out != "" ) {
        print ++outNr out
    }
}

$ awk -f tst.awk file2 file1
1 21:23
2 14:1 14:60

Приведенное выше было протестировано с использованием двух предоставленных вами входных файлов:

$ tail file1 file2
==> file1 <==
1 21:10 21:23
2 1:94 1:100 1:123
3 14:1 14:60 14:23

==> file2 <==
a 21 20 60
b 2 80 90
c 14 50 100
d 2 10 20
e 14 1 12

и ожидаемый результат, который вы предоставили.

0
28.01.2020, 03:27

Теги

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