
:
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
마지막에는 이미 언급했습니다.