Como separar o sublinhado em espaço separado?

Como separar o sublinhado em espaço separado?

Eu tenho os seguintes dados:

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

Quero transformar o sublinhado em um espaço, para que C_C seja C C.

Como eu posso fazer isso? Por favor, torne o código geral para aplicá-lo a todos os dados que possuo.

Recebi o seguinte de alguém "não é meu código" sed '1d' plink.raw | sed 's/_/ /g' > plinkv2.raw, mas me deu células vazias, os dados não estão completos.

Responder1

GNU sed:

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

Isso substituirá filee salvará um backup do original em arquivo file.tmp.

POSIX sed:

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

Você tem que redirecionar para outro arquivo. Copie file2para o original se quiser.

Ambos usam o conceito de "referências anteriores". O texto circundante com \(.. \)no padrão o torna disponível na substituição por \1, \2, etc.

Responder2

Please find the below command and output

ele substitui _ por espaços em todo o arquivo

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

SE quiser que seja substituído apenas pela primeira partida

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

Informe-nos para qualquer esclarecimento, por favor, forneça a entrada e a saída adequadas

informação relacionada