Как найти и подсчитать совпадающие данные для столбца ID в двух файлах?

Вы можете использовать at -cи номер задания, чтобы получить содержимое сценария и либо передать его в вашу оболочку, либо повторно отправить его, а затем удалить задание с помощью atrm.

2
01.02.2020, 19:45
2 ответа

Решение с awk, tail, sort, joinи wc.

join <(awk -F '\t' '{print $125}' file1 | tail -n +2 | sort) <(awk -F '\t' '{print $1}' file2 | tail -n +2 | sort ) | wc -l
3

Объяснение.

Это решение предполагает, что столбцы разделены табуляцией. С помощью awkсобираются 125-й столбец файла1 и первый столбец файла2. tail -n +2удаляет первую строку собранных результатов. sortявляется обязательным, так как joinпредполагает упорядоченные файлы. Результирующий пересекающийся набор передается в wc, который возвращает количество строк.

2
28.04.2021, 23:24

Вы близко. Попробуйте

awk 'FNR == 1 {next}; FNR==NR {P[$125]; next} $1 in P {P[$1]++} END {for (p in P) print p, P[p]+0}' file[12]
03:3304593_GA_G_1 1
01:3290834_CT_C_1 0
09:9433933_GA_G_1 1
06:6265733_GA_G_1 1

Очевидно, что не все позиции в файле1 находятся в файле2.

1
28.04.2021, 23:24

Теги

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