2

我有一个由许多列组成的文件,如下所示:

0/0:7,0:7:21:0,21,245 0/0:9,0:9:27:0,27,339 0/0:13,0:13:39:0,39,524

我想删除每列中的所有内容,以便输出如下所示:

0/0 0/0 0/0

手动应用像 awk 这样的解决方案的列太多了,您必须为每列输入 $1、$2。

我在 R 中尝试了许多解决方案,但都没有给出我正在寻找的结果。他们都拆分了列,而不是只保留第一个条目。这是一个 vcf 文件,我尝试过使用 vcf2tsv,但我无法让依赖项工作。

例如,我尝试了以下代码:

test<-sub('(:<=\\:).*$', '', x, perl=TRUE)

这给了我以下信息:

"c(\"0/0:8,0:8:24:0,24,305\", \"0/0:6,0:6:18:0,18,242\", \"0/0:5,0:5:15:0,15,200\",

显然我不明白代码。任何帮助表示赞赏。

4

1 回答 1

1

使用问题中的示例输入,您可以使用

sed 's#:[^ ]*##g' inputfile

得到输出

0/0 0/0 0/0

sed脚本将以冒号 ( ) 开头的所有字符 ( :) 后跟除空格 ( [^ ]) 之外的任何字符替换为所有出现的空字符串 ( g)。这意味着它将在由空格分隔的所有列中执行此操作。

于 2019-10-15T16:55:38.077 回答