在大文件的每一列中,删除特定分隔符后的所有内容

Within each column of a large file, removing everything after a certain delimiter

我有一个包含许多列的文件,如下所示:

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 中尝试了很多解决方案,none 其中给出了我正在寻找的结果。他们都拆分了列,而不是只保留第一个条目。这是一个 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\",

显然我不明白代码。感谢任何帮助。

您可以使用问题中的样本输入

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

获取输出

0/0 0/0 0/0

sed 脚本会将所有以冒号 (:) 开头,后跟除 space ([^ ]) 之外的任何字符的所有内容替换为空字符串(g)。这意味着它将在由 space.

分隔的所有列中执行此操作