
나는 다음과 같은 데이터를 가지고 있습니다 :
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" 입력 파일
명확한 설명이 필요하면 알려주시기 바랍니다. 적절한 입력 및 출력을 제공해 주시기 바랍니다.