替换多列中的值

Ruc*_*nik 0 python perl awk

之前已经问过这个问题但我的问题非常具体,因此我发布了这个问题.

我有一个看起来像这样的文件:

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
Run Code Online (Sandbox Code Playgroud)

我的任务是用'.'替换第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
Run Code Online (Sandbox Code Playgroud)

试图找到Perl和Python文件,但我想我删除了它们.

Avi*_*Raj 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 + .
Run Code Online (Sandbox Code Playgroud)

它用a替换第6列值,.如果第5 列的值是,则替换第5列中的1所有字符,-否则它将替换所有值+