vcf 파일에서 특정 패턴 뒤의 나머지 각 줄을 제거하는 방법은 무엇입니까?

vcf 파일에서 특정 패턴 뒤의 나머지 각 줄을 제거하는 방법은 무엇입니까?

:vcf 파일의 각 줄에서 기호 뒤의 숫자를 제거하는 방법 . 예:

0|0:0.81        0|1:0.81        0|0:0.76        0|0:0.83
0|1:0.99        0|0:0.03        0|0:0.83        0|0:0.2

출력은 다음과 같아야 합니다.

0|0        0|1        0|0        0|0
0|1        0|0        0|0        0|0

다음을 시도했지만 첫 번째 이후의 모든 내용이 삭제됩니다.:

sed 's/[:].*$//' file.vcf 

답변1

그런 다음 제거하려는 :숫자 또는 점 문자를 직접 제거하십시오 .

$ sed 's/:[0-9.]*//g' file.vcf
0|0        0|1        0|0        0|0
0|1        0|0        0|0        0|0

g또한 각 줄에서 일치하는 모든 하위 문자열에 대해 끝 부분에서 교체를 반복 해야 합니다 .


주문,

sed 's/[:].*$//' file.vcf 

:첫 번째 문자와 일치한 다음줄 끝까지의 문자 수. 그래서 당신은 결국

0|0
0|1

출력으로.

이 표현과 제가 제안한 표현의 차이점은 (모든 단일 문자와 일치) 실제로 제거하려는 문자 집합을 제한 .하도록 변경했다는 것입니다 . 또한 줄 중간에 있는 내용도 제거해야 하기 때문에 [0-9.]패턴을 줄 끝에 고정할 수 없습니다 . $마지막 g으로 나는 이미 그것을 언급했습니다.

관련 정보