之前已经问过这个问题但我的问题非常具体,因此我发布了这个问题.
我有一个看起来像这样的文件:
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文件,但我想我删除了它们.
通过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所有字符,-否则它将替换所有值+