我有一个像这样的文件床。
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 . -
为进行后续分析,我需要区分相同的元素。 es。 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
,但我不知道如何将其应用于所有序列
答案 0 :(得分:3)
请您尝试以下。
awk 'BEGIN{OFS="\t"} {$4=$4"_"++count[$4]} 1' Input_file
答案 1 :(得分:2)
使用表的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 . -