我有一个像这样的文件(1kG_MDS5.bim):
1 rs58108140 0 10583 A G
1 1:11508[b37]A,G 0 11508 A G
1 1:15820[b37]G,T 0 15820 T G
1 1:16257[b37]C,G 0 16257 C G
1 1:16378[b37]C,T 0 16378 T C
我想删除第二列中所有出现的 [b37] 并将逗号替换为列,以便最终结果如下所示:
1 rs58108140 0 10583 A G
1 1:11508:A:G 0 11508 A G
1 1:15820:G:T 0 15820 T G
1 1:16257:C:G 0 16257 C G
1 1:16378:C:T 0 16378 T C
我尝试通过运行以下命令来部分解决这个问题(只需删除 [b37]):
sed -i -E 's/([b37])/:/g' 1kG_MDS5.bim
但我得到了这个:
1 rs58108140 0 1058: A G
1 1:11508[:::]A,G 0 11508 A G
1 1:15820[:::]G,T 0 15820 T G
1 1:1625:[:::]C,G 0 1625: C G
您能否告诉我如何获得最终结果,其中线条如上所示。它不需要是 sed 解决方案(awk 会很棒)而且这个文件包含大约 600 万行。
答案1
你可以试试这个:
sed 's/\[b37\]\(.\),/:\1:/' 1kG_MDS5.bim
输出:
1 rs58108140 0 10583 A G
1 1:11508:A:G 0 11508 A G
1 1:15820:G:T 0 15820 T G
1 1:16257:C:G 0 16257 C G
1 1:16378:C:T 0 16378 T C
您的模式中的问题是括号没有转义,因此sed
尝试替换出现的 b、3 和 7,而不是字符串“[b37]”。