У меня есть вот такая папка.
KQ4156 0 34 Simple_repeat . +
KQ4156 35 64 Simple_repeat . +
KQ4156 1759 1822 Simple_repeat . +
KQ4156 1901 2059 Simple_repeat . -
KQ4156 2112 2258 DNA/hAT-Charlie . +
KQ4156 2890 2964 Simple_repeat . +
KQ4156 4085 4130 DNA/hAT-Charlie . +
KQ4156 5587 5619 Simple_repeat . +
KQ4156 5931 5995 SINE/tRNA-Deu . -
для последующего анализа мне нужно различать одни и те же элементы. э. simple_repeats_1, simple_repeats_2,
и т. д. и DNA/hAT-Charlie_1, DNA/hAT-Charlie_2,
и т. д.... для всех элементов.
используется следующий сценарий:
awk 'BEGIN{OFS = "\t"}{if (NR>3) {if ($9= = "C"){strand = "-"}else{strand = "+"};print $5,$6-1,$7,$11,".",strand}}' file.fa.out > file.bed
как я могу изменить его, чтобы получить то, что я ищу? Думал применить paste
но не знаю как применить для всех последовательностей
Потому что мне нужно различать элементы с одинаковыми именами в генах
Аааа, когда вы пронумеруете весь файл, вы сможете различить любую строку, значит, вы сможете различить любые гены, так?
Решение awk с использованием таблицы является самым простым:
awk -vOFS='\t' '{ seen[$4]++; $4=$4"_"seen[$4]; print; }' file
выведет:
KQ4156 0 34 Simple_repeat_1 . +
KQ4156 35 64 Simple_repeat_2 . +
KQ4156 1759 1822 Simple_repeat_3 . +
KQ4156 1901 2059 Simple_repeat_4 . -
KQ4156 2112 2258 DNA/hAT-Charlie_1 . +
KQ4156 2890 2964 Simple_repeat_5 . +
KQ4156 4085 4130 DNA/hAT-Charlie_2 . +
KQ4156 5587 5619 Simple_repeat_6 . +
KQ4156 5931 5995 SINE/tRNA-Deu_1 . -
Не могли бы вы попробовать следующее.
awk 'BEGIN{OFS = "\t"} {$4=$4"_"++count[$4]} 1' Input_file
Почему бы просто не пронумеровать весь файл?
nl file
?