之前已经问过这个问题但我的问题非常具体,因此我发布了这个问题。
我有一个看起来像这样的文件:
chr10 100008748 100010821 2 2 1
chr10 100011459 100012109 2 2 1
chr10 100015496 100016536 2 2 1
chr10 100017921 100018765 2 2 1
chr10 100018985 100019147 2 2 1
chr10 100022808 100027387 2 2 0
chr10 100143625 100144703 2 2 1
chr10 100144824 100146957 2 2 1
chr10 100144941 100146957 2 2 0
chr10 100147064 100148110 2 2 1
我的任务是用'。'替换第6列值。 (期间)和第5列+/-。如果$ 5中的值为1,则“ - ”否则为“+”。
我已经尝试了一些python和perl脚本以及一些awk命令,但对我来说并没有太多帮助。
非常感谢pesudocode,谢谢你的时间。
**使用AWK **
BEGIN { FS=OFS=' ' }
> $6 == "1" { $6 == "." }
> $6 == "0" { $6 == "." }
> 1
> ' Illumina_Heart_Gencode_AlignedSJ_cut.bed > test2.bed
awk '{ gsub(".",$6); print $1,$2,$3,$4,$5,$6}' Illumina_Heart_Gencode_AlignedSJ_cut.bed > test.bed
试图找到Perl和Python文件,但我想我删除了它们。
答案 0 :(得分:5)
通过awk,
$ awk '{$6="."; if ($5==1){$5="-"} else $5="+"}1' file
chr10 100008748 100010821 2 + .
chr10 100011459 100012109 2 + .
chr10 100015496 100016536 2 + .
chr10 100017921 100018765 2 + .
chr10 100018985 100019147 2 + .
chr10 100022808 100027387 2 + .
chr10 100143625 100144703 2 + .
chr10 100144824 100146957 2 + .
chr10 100144941 100146957 2 + .
chr10 100147064 100148110 2 + .
它用.
替换第6列值,如果第5列的值为1
,则它将第5列中的所有字符替换为-
,否则它将替换所有值+