如何:
从 vcf 文件中的每一行中删除符号后的数字。例子:
0|0:0.81 0|1:0.81 0|0:0.76 0|0:0.83
0|1:0.99 0|0:0.03 0|0:0.83 0|0:0.2
输出应该是:
0|0 0|1 0|0 0|0
0|1 0|0 0|0 0|0
我已经尝试过以下操作,但它会删除第一个之后的所有内容:
sed 's/[:].*$//' file.vcf
答案1
您想要从 中删除:
,然后直接删除尽可能多的数字或点字符:
$ sed 's/:[0-9.]*//g' file.vcf
0|0 0|1 0|0 0|0
0|1 0|0 0|0 0|0
您还需要g
在最后重复替换每行上的所有匹配子字符串。
你的命令,
sed 's/[:].*$//' file.vcf
将匹配第一个:
字符,然后到行尾任意数量的字符。这就是为什么你最终会得到
0|0
0|1
作为输出。
这个和我建议的表达式之间的区别是.
(匹配任何单个字符),我将其更改为[0-9.]
限制我们实际要删除的字符集。我们也无法将模式锚定到行尾,$
因为我们还需要删除行中间的内容。最后g
,但我已经提到过。