밑줄을 공백으로 분리하는 방법은 무엇입니까?

밑줄을 공백으로 분리하는 방법은 무엇입니까?

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

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를 C C로 만들고 싶습니다.

어떻게 해야 합니까? 제가 가지고 있는 데이터 전체에 적용할 수 있도록 코드를 일반화해 주세요.

"내 코드가 아닌" 누군가로부터 다음 내용을 받았지만 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" 입력 파일

명확한 설명이 필요하면 알려주시기 바랍니다. 적절한 입력 및 출력을 제공해 주시기 바랍니다.

관련 정보