
Como remover os dígitos após :
entrar em cada linha de um arquivo vcf. Exemplo:
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
A saída deve ser:
0|0 0|1 0|0 0|0
0|1 0|0 0|0 0|0
Eu tentei o seguinte, mas remove tudo depois do primeiro:
sed 's/[:].*$//' file.vcf
Responder1
Você deseja excluir do e :
, em seguida, tantos caracteres que sejam dígitos ou pontos quanto possível logo depois disso:
$ sed 's/:[0-9.]*//g' file.vcf
0|0 0|1 0|0 0|0
0|1 0|0 0|0 0|0
Você também precisa g
repetir a substituição de todas as substrings correspondentes em cada linha no final.
Seu comando,
sed 's/[:].*$//' file.vcf
corresponderia ao primeiro :
caractere e, em seguida,qualquer número de caracteres até o final da linha. É por isso que você acaba com
0|0
0|1
como saída.
A diferença entre esta e a minha expressão sugerida é .
(que corresponde a qualquer caractere único), para a qual mudei para [0-9.]
restringir o conjunto de caracteres que realmente queremos excluir. Também não podemos ancorar o padrão no final da linha, $
pois também precisamos excluir coisas no meio da linha. E no g
final, mas eu já mencionei isso.