【问题标题】:Transpose a column with respect to next column相对于下一列转置一列
【发布时间】:2020-06-13 19:50:47
【问题描述】:

我有一个像这样的文件(file1.vcf)

chr1 254 . A . 80 . . xxxx xxxxx
chr1 255 . T . 80 . . xxxx xxxxx
chr1 554 . G C 80 . . xxxx xxxxx
chr1 554 . A . 80 . . xxxx xxxxx
chr1 754 . G A 80 . . xxxx xxxxx

根据第四列和第五列的值,我需要像这样创建一个新文件

>file1
ATCAA

重要的是,如果某个值位于第四列,则必须用该值替换。我尝试使用以下 awk 和转置

 awk '{if ($5==".") print $4 
else print $5}'

但我可以找到按预期输出的解决方案

【问题讨论】:

  • 在这样的情况下,我们确实鼓励用户添加他们为解决自己的问题而付出的努力,所以请用您的努力编辑您的问题,然后让我们知道。
  • 算法看起来很简单,基本上是:if(第 5 列的值是一个点)输出(第 4 列)else 输出(第 5 列)。
  • 在 awk 手册页中查找 printf
  • 试试awk '{if ($5==".") s=s $4; else s=s $5; }END{ print s }'

标签: awk vcf-variant-call-format


【解决方案1】:
$ awk '{printf "%s", ($5=="."?$4:$5)}' file
ATCAA

如果最后需要换行,请添加END{print ""}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    相关资源
    最近更新 更多