【问题标题】:Changing some string by awk通过 awk 更改一些字符串
【发布时间】:2020-07-19 00:53:00
【问题描述】:

我这里有一个大文件

https://www.dropbox.com/s/ujesog1yv5yzbes/vep.txt?dl=0

从这个文件中我需要类似的东西

Uploaded_variation  Chromosome  Location    Ref Allele  gene
1_3407069_C/T            1      3407069      C     T    C1orf159
1_26226650_G/A           1     26226650      G     A    C1orf159
1_41950247_C/T           1     41950247      C     T    C1orf159

我想要的文件的样本在这里

https://www.dropbox.com/s/4vnhng5vno11ct1/WHAT_I_need.txt?dl=0

我发现这个脚本给了我我想要的输出的一部分,但是一团糟

awk '{split($1,a,"_"); split(a[3],b,"/"); print a[1],a[2],b[1],b[2],$0}' file.vep.txt | awk '{split($18,a,";"); split(a[2],b,"="); print b[2],$0}'> Jane_script_output.txt

https://www.dropbox.com/s/6sjucbrb49l93xl/Jane_script_output.txt?dl=0

在这个脚本的这个输出中我有

 #Uploaded variation   #Uploaded_variation
 1 883477 G T 1_883477_G/T
PRDM16 1 3125744 A G 1_3125744_A/G
PRDM16 1 3125744 A G 1_3125744_A/G
PRDM16 1 3125744 A G 1_3125744_A/G

我不知道这个脚本如何给我按列输出而不是这个混乱

【问题讨论】:

  • 为什么你只接受 bash 或 R 的答案,而不接受 awk 的答案?最好只指定目标,而不是试图指定工具...虽然比这更好展示你自己的尝试,所以你问别人如何用你自己的努力解决问题,而不仅仅是要求某人为您编写程序(我们通常拒绝这样做)。
  • 顺便说一句——每个文件有多少条目,它们是如何分开的?转换只有一条记录长的文件与任意长度的文件是非常不同的。确保您提供了做出可测试答案所需的一切。
  • 另外,请确保您的输入和输出彼此精确匹配。这看起来像是完全不同的符号。
  • 再重复一遍:确保问题中显示的输出是您希望程序在给出示例输入时输出的内容。您肯定不希望它以SYMBOL=NOC2L 作为输入和输出SYMBOL=C1orf159?如果作为问题的一部分,我们没有来自给定输入的逐字节正确的预期输出,那么任何人都如何确定他们正在正确地测试他们的答案?
  • 类似地,如果您的输入文件实际上有多个输入记录,请确保样本输入和样本输出都是如此,这样构建答案的人就知道不同记录之间的界限将如何表现。这仍然不太可能受到好评,因为它要求某人为您完成工作,而不是询问如何解决您在尝试完成自己的工作时遇到的特定问题,但至少这会让它可回答,即使它违反了其他规则。

标签: string awk data-manipulation


【解决方案1】:

我发现下面的答案可能会帮助更多的人

awk 'BEGIN{FS=OFS="\t"}{split($1,a,"_"); split(a[3],b,"/"); print a[1],a[2],b[1],b[2],$0}' file.vep.txt | awk 'BEGIN{FS=OFS="\t"}{split($18,a,";"); split(a[2],b,"="); print b[2],$0}' > newfile.txt

【讨论】:

  • 这是您对问题的回答,还是需要进一步帮助的另一种尝试?请对其进行编辑以描述读者正在查看的内容。谢谢!
猜你喜欢
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多