【问题标题】:Within each column of a large file, removing everything after a certain delimiter在大文件的每一列中,删除某个分隔符之后的所有内容
【发布时间】:2019-10-15 16:35:17
【问题描述】:

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

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\",

显然我看不懂代码。任何帮助表示赞赏。

【问题讨论】:

    标签: linux text-processing vcf-variant-call-format


    【解决方案1】:

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

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

    获取输出

    0/0 0/0 0/0
    

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

    【讨论】:

      猜你喜欢
      • 2020-07-19
      • 2015-10-23
      • 2016-01-08
      • 2017-03-20
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多