如何应用Unix';s/Sed&x27;s/Perl';s是否仅将(tr)音译为特定列?
我有这样的程序输出(tab delim): 我只想在第一列上做:用A替换0,用C替换1,用G替换2,用T替换3。 是否有一种方法可以将直接从“mycode”导出的输出进行音译。 因此:如何应用Unix';s/Sed&x27;s/Perl';s是否仅将(tr)音译为特定列?,perl,bash,sed,Perl,Bash,Sed,我有这样的程序输出(tab delim): 我只想在第一列上做:用A替换0,用C替换1,用G替换2,用T替换3。 是否有一种方法可以将直接从“mycode”导出的输出进行音译。 因此: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 238671 ... AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT 937.306 应该可以使用sed来完成,将其放在一个文件中(您可以使用命令行to,使用-e,只是不要忘记那些分号,或者对
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 238671
...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT 937.306
应该可以使用sed来完成,将其放在一个文件中(您可以使用命令行to,使用-e,只是不要忘记那些分号,或者对每一行使用单独的-e)。(编辑:请记住,由于您的数据是以制表符分隔的,因此在第一个s/,它实际上应该是制表符,而不是空格,请确保编辑器不会将其转换为空格) 和使用
./mycode somefile | sed -f sedfile
或chmod 755 sedfile
和do
./mycode somefile | sedfile
执行的步骤包括:
啊,你想要一艘客轮 GNU sed
sed -e "h;s/ .*$//;y/0123/ACGT/;G;s/\n[0-3]*//"
或老式sed(无分号)
使用Perl:
C:\> ./mycode file | perl -lpe "($x,$y)=split; $x=~tr/0123/ACGT/; $_=qq{$x\t$y}"
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 238671
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC 1548.81
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT 937.306
使用这些:
perl -lawnF'\t' -e '$,="\t"; $F[0] =~ y/0123/ACGT/; print @F'
perl-lawnF'\t'-e'$,=“\t”$F[0]=~y/0123/ACGT/;打印@F'
@萨拉提
\此问题的AWK解决方案
awk '{gsub("0","A",$1);gsub("1","C",$1);gsub("2","G",$1);gsub("3","T",$1); print $1"\t"$2}' temp.txt
或者使用-F:perl-lawnF'/\t/'-e'$,=“\t”$F[0]=~y/0123/ACGT/;打印@F'@ysth我总是忘了
-F
。有人能建议我们如何使用awk吗?我想这会很有用。
C:\> ./mycode file | perl -lpe "($x,$y)=split; $x=~tr/0123/ACGT/; $_=qq{$x\t$y}"
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 238671
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC 1548.81
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG 0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT 937.306
$ ./mycode file | perl -lpe '($x,$y)=split; $x=~tr/0123/ACGT/; $_="$x\t$y"'
-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'
awk '{gsub("0","A",$1);gsub("1","C",$1);gsub("2","G",$1);gsub("3","T",$1); print $1"\t"$2}' temp.txt