나는 다음과 같은 데이터를 가지고 있습니다 :
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" 입력 파일
설명이 필요한 경우 알려주십시오. 올바른 입력 및 출력을 제공하십시오.