다음과 같은 파일이 있습니다(1kG_MDS5.bim).
1 rs58108140 0 10583 A G
1 1:11508[b37]A,G 0 11508 A G
1 1:15820[b37]G,T 0 15820 T G
1 1:16257[b37]C,G 0 16257 C G
1 1:16378[b37]C,T 0 16378 T C
두 번째 열에서 [b37] 항목을 모두 제거하고 쉼표를 해당 열로 대체하여 최종 결과가 다음과 같도록 하고 싶습니다.
1 rs58108140 0 10583 A G
1 1:11508:A:G 0 11508 A G
1 1:15820:G:T 0 15820 T G
1 1:16257:C:G 0 16257 C G
1 1:16378:C:T 0 16378 T C
다음 명령을 실행하여 이 문제를 부분적으로 해결하려고 했습니다([b37]만 제거).
sed -i -E 's/([b37])/:/g' 1kG_MDS5.bim
하지만 나는 이것을 얻습니다:
1 rs58108140 0 1058: A G
1 1:11508[:::]A,G 0 11508 A G
1 1:15820[:::]G,T 0 15820 T G
1 1:1625:[:::]C,G 0 1625: C G
위와 같이 선이 표시된 최종 결과를 얻는 방법을 알려주십시오. sed 솔루션일 필요는 없으며(awk가 있으면 좋을 것임) 파일에는 약 600만 줄이 포함되어 있습니다.
답변1
다음을 시도해 볼 수 있습니다.
sed 's/\[b37\]\(.\),/:\1:/' 1kG_MDS5.bim
산출:
1 rs58108140 0 10583 A G
1 1:11508:A:G 0 11508 A G
1 1:15820:G:T 0 15820 T G
1 1:16257:C:G 0 16257 C G
1 1:16378:C:T 0 16378 T C
패턴의 문제는 대괄호가 이스케이프되지 않기 때문에 sed
문자열 "[b37]" 대신 b, 3 및 7의 발생을 바꾸려고 한다는 것입니다.