¿Cómo hacer que el guión bajo se separe en un espacio separado?

¿Cómo hacer que el guión bajo se separe en un espacio separado?

Tengo los siguientes datos:

ID  Affection   rs3117294   rs2747453   rs2747454   rs2747457   rs3131888
D0024949    0   C_C A_G A_G A_A A_G
D0024302    0   A_C A_A A_G A_A A_A
D0023151    0   C_C A_G A_A A_A G_G
D0022042    0   A_C A_A G_G A_A A_A
D0021275    0   C_C A_G A_G A_A A_G
D0021163    0   A_A A_A G_G A_A A_A
D0020795    0   A_A A_A G_G A_C A_G
D0020691    0   A_A A_A G_G A_C A_G
D0019121    0   A_A A_A G_G C_C G_G

Quiero que el guión bajo sea un espacio, de modo que C_C sea C C.

¿Cómo puedo hacer eso? Haga que el código sea general para aplicarlo a todos los datos que tengo.

Recibí lo siguiente de alguien "no es mi código" sed '1d' plink.raw | sed 's/_/ /g' > plinkv2.raw, pero me dio celdas vacías y los datos no están completos.

Respuesta1

GNU sed:

sed -itmp 's/\(\w\)_\(\w\)/\1 \2/g' file

Esto sobrescribirá filey guardará una copia de seguridad del original en file.tmp.

POSIX sed:

sed 's/\([[:alpha:]]\)_\([[:alpha:]]\)/\1 \2/g' file > file2

Tienes que redirigir a otro archivo. Copie file2al original si eso es lo que desea.

Ambos utilizan el concepto de "referencias anteriores". El texto rodeado con \(.. \)en el patrón lo hace disponible en sustitución de \1, \2, etc.

Respuesta2

Please find the below command and output

reemplaza _ con espacios en todo el archivo

awk '{gsub("_"," ",$0);print $0}' j.txt 
D0024949    0   C C A G A G A A A G
D0024302    0   A C A A A G A A A A
D0023151    0   C C A G A A A A G G
D0022042    0   A C A A G G A A A A
D0021275    0   C C A G A G A A A G
D0021163    0   A A A A G G A A A A
D0020795    0   A A A A G G A C A G
D0020691    0   A A A A G G A C A G
D0019121    0   A A A A G G C C G G

SI quiero que se reemplace solo el primer partido

sed "s/_/ /1" archivo de entrada

Háganos saber para cualquier aclaración por favor proporcione la entrada y salida adecuadas.

información relacionada