다음과 같이 탭으로 구분된 파일이 있습니다.
GCF_000014165.1_ASM1416v1.dist_nbr_anntn WP_011558474.1 1155234 1156286 44173 polyketide synthase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn WP_011558475.1 1156298 1156807 12 isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn WP_011558476.1 1156804 1157820 -3 NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]
6열부터 마지막 열까지의 탭 문자를 공백으로 바꾸려면 어떻게 해야 합니까?
출력은 다음과 같아야 합니다.
GCF_000014165.1_ASM1416v1.dist_nbr_anntn WP_011558474.1 1155234 1156286 44173 polyketide synthase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn WP_011558475.1 1156298 1156807 12 isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn WP_011558476.1 1156804 1157820 -3 NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]
답변1
GNU sed를 사용하면 다음과 같이 간단합니다.
sed 's/\t/ /6g' file
s 명령 뒤에는 다음 플래그 중 0개 이상이 올 수 있습니다.
g
첫 번째 항목뿐만 아니라 정규식과 일치하는 모든 항목에 대체를 적용합니다.
number
정규식의 숫자 항목만 바꿉니다.
s 명령의 상호 작용 참고: POSIX 표준은 g와 숫자 수정자를 혼합할 때 어떤 일이 발생하는지 지정하지 않으며 현재 sed 구현 간에 널리 합의된 의미가 없습니다. GNU sed의 경우 상호 작용은 다음과 같이 정의됩니다. 세 번째 일치 이전의 일치 항목을 무시한 다음 세 번째 일치 이후의 모든 일치 항목을 일치시키고 교체합니다.