awk, сохранить строки с одинаковым значением указанного столбца c - PullRequest
1 голос
/ 21 января 2020

Я хочу сравнить с AWK значения в столбце 7 между строками и сохранить строки в файле с тем же значением столбца 7. Затем при изменении значения сохранить его в новом файле ...

chr18   57650444    57650444    0   3.5 ST  mW1 chr18   57646426    57803315    
chr18   57668180    57668180    0   2.4 ST  mW1 chr18   57646426    57803315
chr18   57668180    57668180    0   2.4 ST  mW2 chr18   57646426    57803315
chr18   57650444    57650444    0   3.5 ST  mW1 chr18   57646426    57803315    
chr18   57650444    57650444    0   3.5 ST  mE3 chr18   57646426    57803315    

Мне нужно использовать изолировать столбец 7, например awk '{print $7}', и одновременно прочитать строки NR и NR-1, наконец, сравнить значения 7-го столбца между первым и вторым столбцом и используйте "если", awk '{if (NR-1 == NR) print NR}' inputfile >> "value_column_7".txt ... я думаю, что-то вроде этого ...

Что я хочу

filename: mW1.txt
    chr18   57650444    57650444    0   3.5 ST  mW1 chr18   57646426    57803315    
    chr18   57668180    57668180    0   2.4 ST  mW1 chr18   57646426    57803315
    chr18   57650444    57650444    0   3.5 ST  mW1 chr18   57646426    57803315    

filename: mW2.txt
    chr18   57668180    57668180    0   2.4 ST  mW2 chr18   57646426    57803315

filename: mE3.txt
    chr18   57650444    57650444    0   3.5 ST  mE3 chr18   57646426    57803315    

Не могли бы вы помочь мне, как их объединить? Спасибо

1 Ответ

2 голосов
/ 21 января 2020

Самое простое - записать в файл, определенный как $7:

$ awk '{
    file=$7 ".txt"       # name the file
    print >> file        # append to file
}' file

Если у вас заканчиваются fds или файловые дескрипторы, вам нужно начать беспокоиться о close() ing файлах:

$ awk '{
    if($7!=p) {          # if $7 as changed since previous record
        close(file)      # close the previous file
        file=$7 ".txt"   # name a new file based on $7
    }
    print >> file        # append to file in case of recurring $7
    p=$7                 # remember $7 for next record
}' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...