我有一个文件,其中最后几列的读数与一个基因相关。
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:21577:2860 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:12188:3487 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:9524:3758 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:7243:4130 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:20035:10131 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:14291:16898 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:10796:17822 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11102:17796:2683 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11103:22603:1930 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11103:2286:7789 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 44 + number of reads
,即列6-8出现的次数。在这个例子中,它们出现了10次。我想把这个单独列出来。
我试着用awkawk '!seen[$5]++' | awk '{a[$12]=1;} END{for (k in a)n++; print n;}'
做这个,但它不起作用。有人能帮忙吗?问候,阿米特。
根据您展示的样品,您可以尝试以下操作吗?在GNUawk
下编写和测试。
awk '
FNR==NR{
arr[$1]++
next
}
($1 in arr){
print $0,arr[$1]
delete arr[$1]
}
' Input_file Input_file
解决方案2:如果您的样本是按第一列排序的形式,请尝试以下操作:
awk '
prev!=$1 && prev{
print prevLine,count
}
{
prev=$1
prevLine=$0
}
END{
if(prev){
print prevLine,count
}
}
' Input_file
注意:如果记录没有按第一列排序,则使用sort
命令与Input_file并将其输出传递给第二个解决方案。