0

我有一个问题,请你帮帮我吗?我有 .txt 文件,我使用 awk 代码使用制表符分隔功能分隔列。我收到对齐列,但如果缺少某些信息,则整行向左转,信息将转移到另一列。请问你能帮帮我吗?我怎么能合并到这个代码中?太感谢了..

#!/bin/bash

for f 
in *.vcf; 
do awk 'BEGIN {OFS = "\t"}
        /^##/ {next}
        /^#/ {sub(/^#/,"",$1)}
        {$1=$1; print}
    ' "$f" > "${f/%vcf/tsv}"
done


> INPUT:
> 
> CHROM    ID    REF   ALT 
  chr1    235     A     B 
  chr2     A      B
  chr3    225     B

输出:

  CHROM    ID   REF   ALT  
  chr1    235    A     B 
  chr2     .     A     B 
  chr3    225    .     B
4

1 回答 1

2

问题包含歧义。看数据:

chr1    235     A     B 
chr2     A      B
chr3    225     B

也许在该chr2行中,我们可以猜测ID缺少该列,因为IDs 是数字。我们缺少一列,它是数字列,所以它必须是ID

但是在第三行中,我们如何知道REF缺少该列,而不是ALT

如果ALT永远不会丢失,那很简单。但是,如果其中任何一个都可能丢失,那可能是不可能的。

在任何情况下,在您编写程序代码将数据重新规范化为适当的列之前,您必须能够清楚地阐明识别哪些列丢失的规则,或者认识到这是不可能的并放弃。

您可能只需要上游并找到一个更好的相同数据来源,它没有经过修改的列。

于 2013-10-24T07:07:30.940 回答