밑줄을 공백으로 구분하는 방법은 무엇입니까? [폐쇄]

밑줄을 공백으로 구분하는 방법은 무엇입니까? [폐쇄]

나는 다음과 같은 데이터를 가지고 있습니다 :

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

밑줄을 공백으로 변경하여 C_C가 CC가 되도록 하고 싶습니다.

어떻게 해야 하나요? 내가 가지고 있는 모든 데이터에 적용되도록 코드를 일반화해 주세요.

"내 코드가 아닌" 누군가로부터 다음 내용을 받았지만 sed '1d' plink.raw | sed 's/_/ /g' > plinkv2.raw불완전한 데이터가 있는 빈 셀이 표시됩니다.

답변1

그누 sed:

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

file원본 파일의 백업을 덮어 쓰고 에 저장합니다 file.tmp.

POSIX sed:

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

다른 파일로 리디렉션해야 합니다. file2필요하신 분은 원본으로 복사해주세요.

둘 다 "역참조" 개념을 사용합니다. 패턴에 \(..이 있는 텍스트 는 등으로 \)대체 될 수 있습니다.\1\2

답변2

Please find the below command and output

파일 전체에서 _를 공백으로 바꿉니다.

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

첫 번째 일치 항목만 교체하려는 경우

sed "s/_/ /1" 입력 파일

설명이 필요한 경우 알려주십시오. 올바른 입력 및 출력을 제공하십시오.

관련 정보