替换多列中的值

2024-09-27 07:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题以前被问过,但我的问题是非常具体,因此我张贴的问题。你知道吗

我有一个这样的文件:

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命令,但没有多少对我有用。你知道吗

如果您能给我一个假药,我将不胜感激,谢谢您的时间。你知道吗

**使用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文件,但我想我删除了它们。你知道吗


Tags: 文件命令脚本时间perlbedilluminacut
1条回答
网友
1楼 · 发布于 2024-09-27 07:21:02

通过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列中的所有字符,否则用+替换所有值

相关问题 更多 >

    热门问题