У меня есть текстовый файл, подобный следующему небольшому примеру:
chr1 HAVANA UTR 368595 368634 . + . gene_id "ENSG00000235249.1"; transcript_id "ENST00000426406.1"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "OR4F29"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "OR4F29-001"; level 2; tag "basic"; tag "appris_principal"; tag "CCDS"; ccdsid "CCDS41220.1"; havana_gene "OTTHUMG00000002860.1"; havana_transcript "OTTHUMT00000007999.1";
chr1 HAVANA transcript 453633 460480 . - . gene_id "ENSG00000236601.1"; transcript_id "ENST00000450983.1"; gene_type "lincRNA"; gene_status "NOVEL"; gene_name "RP4-669L17.2"; transcript_type "lincRNA"; transcript_status "KNOWN"; transcript_name "RP4-669L17.2-002"; level 2; tag "not_best_in_genome_evidence"; tag "basic"; havana_gene "OTTHUMG00000002855.2"; havana_transcript "OTTHUMT00000007988.2";
ожидаемый результат для небольшого примера:
chr1 HAVANA UTR 368583 368595+50 . + . gene_id "ENSG00000235249.1"; transcript_id "ENST00000426406.1"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "OR4F29"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "OR4F29-001"; level 2; tag "basic"; tag "appris_principal"; tag "CCDS"; ccdsid "CCDS41220.1"; havana_gene "OTTHUMG00000002860.1"; havana_transcript "OTTHUMT00000007999.1";
chr1 HAVANA transcript 453645 453583 . - . gene_id "ENSG00000236601.1"; transcript_id "ENST00000450983.1"; gene_type "lincRNA"; gene_status "NOVEL"; gene_name "RP4-669L17.2"; transcript_type "lincRNA"; transcript_status "KNOWN"; transcript_name "RP4-669L17.2-002"; level 2; tag "not_best_in_genome_evidence"; tag "basic"; havana_gene "OTTHUMG00000002855.2"; havana_transcript "OTTHUMT00000007988.2";
во входном файле, есть разные строки,каждая строка начинается с chr
.В каждой строке есть несколько столбцов, а разделителями являются табуляция или «;».Я хочу сделать из этого файла новый файл, в котором будут изменения только в столбцах 4 и 5. На самом деле, если столбец 7 равен «+», тогда столбец 4 в новом файле будет ((column 4 in original file)-12)
и 5-йстолбец в новом файле будет ((column 4 in original file)+50)
.и если столбец 7 - «-», то столбец 4 в новом файле будет ((column 4 in original file)+12)
, а 5-й столбец в новом файле будет ((column 4 in original file)-50)
. единственная разница между входным файлом и выходным файлом в числах в 4-ми 5-й столбец.Я попытался сделать это в awk
, используя следующую команду: Я попробовал этот код:
awk -F '\t' '$7= "+" { col4 = $4; $4 = col4 - 12; $4 = col5 + 50; print }' '$7= "-" { col4 = $4; $4 = col4 + 12; $5 = col4 -50 ; print }' OFS='\t' infile.txt > outfile.txt
он ничего не возвращает.ты знаешь как это исправить?Я хочу получить выходной файл в том же формате, что и входной файл.имеется в виду те же разделители.