我有这种类型的文件 - 2 列列表,其中基因位于第一列,染色体位置位于第二列。
1:924024
1:924310
SAMD11 1:930353
SAMD11 1:930939
NOC2L 1:944858
NOC2L 1:946247
KLHL17 1:960891
KLHL17 1:961945
需要转换为该列表类型,以便保存2列格式。每个组数字适用于每个基因(而不是每行)。
1:na 1:924024
2:na 1:924310
3:SAMD11 1:930353
3:SAMD11 1:930939
4:NOC2L 1:944858
4:NOC2L 1:946247
5:KLHL17 1:960891
5:KLHL17 1:961945
我尝试使用这一行:
awk -F "\t" -v OFS="\t" '{ ($1=="")? ($1=NR":na"):($1=NR":"$1)}1' test.txt
但是, 这使得行编号,我得到
1:na 1:924024
2:na 1:924310
3:SAMD11 1:930353
4:SAMD11 1:930939
5:NOC2L 1:944858
6:NOC2L 1:946247
7:KLHL17 1:960891
8:KLHL17 1:961945
而不是想要的
1:na 1:924024
2:na 1:924310
3:SAMD11 1:930353
3:SAMD11 1:930939
4:NOC2L 1:944858
4:NOC2L 1:946247
5:KLHL17 1:960891
5:KLHL17 1:961945
用 bash 可以做这样的事情吗? 谢谢!
最佳答案
$ awk 'BEGIN {FS=OFS="\t"}
{c+=!($1 in a)
if($1=="") $1="na"
else a[$1]
print c":"$1, $2}' file | column -t
1:na 1:924024
2:na 1:924310
3:SAMD11 1:930353
3:SAMD11 1:930939
4:NOC2L 1:944858
4:NOC2L 1:946247
5:KLHL17 1:960891
5:KLHL17 1:961945
关于bash - 使用 bash 命令在列中创建编号集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67672973/