열의 점과 숫자를 삭제하는 방법은 무엇입니까?

열의 점과 숫자를 삭제하는 방법은 무엇입니까?

다음과 같은 데이터가 있습니다.

head l4
chr   pos a1 a2 a3 variant_id         pval_nominal gene_id
chr1 13550 G A b38 chr1_13550_G_A_b38 0.375614 ENSG00000227232.5
chr1 14671 G C b38 chr1_14671_G_C_b38 0.474708 ENSG00000227232.5
chr1 14677 G A b38 chr1_14677_G_A_b38 0.699887 ENSG00000227232.5

마지막 열의 점과 숫자를 제거하고 싶습니다. 항상 5는 아니고 임의의 숫자일 수 있습니다.

그래서 다음과 같은 데이터가 있습니다.

chr pos a1 a2 a3 variant_id pval_nominal gene_id
chr1 13550 G A b38 chr1_13550_G_A_b38 0.375614 ENSG00000227232
chr1 14671 G C b38 chr1_14671_G_C_b38 0.474708 ENSG00000227232
chr1 14677 G A b38 chr1_14677_G_A_b38 0.699887 ENSG00000227232

나는 이것을 시도했습니다 :

sed 's/\..*$//' l4 > l4_clean

그러나 이는 다른 많은 것들을 제거합니다.

답변1

보다 구체적인 정규식 패턴을 적용하면 됩니다(숫자/숫자와 일치하도록).

sed 's/\.[0-9]*$//' l4 > l4_clean

답변2

마지막 필드만 수정하고 싶으므로 필드를 처리할 수 있는 도구를 사용하세요. 예를 awk들어 에서는 awk변수 $NF가 마지막 필드이므로 다음을 수행할 수 있습니다.

awk '{sub(/\..*/,"",$NF)}1' l4 > l4_clean

답변3

.마지막 문자가 점( ) 뒤의 숫자, 문자 또는 기호일 수 있는 경우 다음 명령을 사용할 수 있습니다.

sed "s/\..$//g" filename

awk '{gsub(/\..*/,"",$NF);print $0}' filename

파이썬

#!/usr/bin/python
import re
k=re.compile(r'\..')
m=open('i.txt','r')
for i in m:
    p=re.sub(k,"",i)
    print p,

관련 정보