Я пытаюсь использовать awk для имитации uniq -d
в определенных полях, чтобы напечатать строку, читаемую в данный момент, а также предыдущую строку, используя первое решение из здесь , но, похоже, для печати одна и та же строка дважды.
Вот пример материала в файле.
130 chr1 7237 7238 0k9imgkt
135 chr1 7637 7637 b9gko
138 chr1 7908 7908 kob9g
139 chr1 8045 8045 34e5rg 4r
151 chr1 8329 8329 b
151 chr1 8346 8346 345y46htyh
151 chr1 8346 8346 76jtuj
152 chr1 8358 8358 asfge
Вот строка, которую я использовал. Я пытаюсь сравнить строки на основе второго, третьего и четвертого полей; если две или более строки идентичны в этих полях, выведите всю эту строку полностью. Также можно предположить, что строки отсортированы по полям 1, 2 и 3.
awk '{prev = $0; ++array[$2$3$4]; if(array[$2$3$4] == 2) {print; curr = $0; $0 = prev; print; $0 = curr}}' file
Вот что я хочу, чтобы вывод был.
151 chr1 8346 8346 345y46htyh
151 chr1 8346 8346 76jtuj
А вот каков результат.
151 chr1 8346 8346 76jtuj
151 chr1 8346 8346 76jtuj