gpt4 book ai didi

perl - 我如何将 Unix/Sed/Perl 的音译 (tr) 应用于特定列?

转载 作者:行者123 更新时间:2023-11-29 09:01:34 28 4
gpt4 key购买 nike

我的程序输出看起来像这样(tab delim):

    $ ./mycode somefile 
0000000000000000000000000000000000 238671
0000000000000000000000000000000001 0
0000000000000000000000000000000002 0
0000000000000000000000000000000003 0
0000000000000000000000000000000010 0
0000000000000000000000000000000011 1548.81
0000000000000000000000000000000012 0
0000000000000000000000000000000013 937.306

我想做的只是在第一列:用 A 替换 0,用 C 替换 1,用 G 替换 2,用 T 替换 3。有没有一种方法可以音译直接从“mycode”通过管道传输的输出。产生这个:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA        238671
...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT 937.306

最佳答案

使用 Perl:

C:\> ./mycode file | perl -lpe "($x,$y)=split; $x=~tr/0123/ACGT/; $_=qq{$x\t$y}"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA      238671AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC      0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG      0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT      0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA      0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC      1548.81AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG      0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT      937.306

您可以在 Bash 中使用单引号:

  $ ./mycode file | perl -lpe '($x,$y)=split; $x=~tr/0123/ACGT/; $_="$x\t$y"' 

正如@ysth 在评论中指出的那样,perl 实际上提供了命令行选项-a-F:

 -a                autosplit mode with -n or -p (splits $_ into @F) ... -F/pattern/       split() pattern for -a switch (//'s are optional)

使用那些:

perl -lawnF'\t' -e '$,="\t"; $F[0] =~ y/0123/ACGT/; print @F'

关于perl - 我如何将 Unix/Sed/Perl 的音译 (tr) 应用于特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536537/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com