
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á file
e 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 file2
para 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