내 file.txt는 다음과 같습니다
variant_id pval_nominal
1_752721_A_G_b37 2.23485e-05
1_900397_C_T_b37 3.04603e-05
1_928297_G_A_b37 2.12455e-05
첫 번째 열의 두 번째 밑줄 이후의 모든 내용을 제거하려고 하므로 다음과 같습니다.
variant_id pval_nominal
1_752721 2.23485e-05
1_900397 3.04603e-05
1_928297 2.12455e-05
첫 번째 열의 두 번째 밑줄 뒤에 있는 모든 항목을 제거하라고 요청하는 이유는 첫 번째 열의 인스턴스가 다음과 같을 수 있기 때문입니다. 1_1025672_GCA_G_b37
다음 명령을 사용하려고 합니다.
awk -F _ '{print $1 (NF>1? FS $2 : "")}' file.txt > file2.txt
그러나 file2.txt는 다음과 같습니다.
variant_id pval
1_752721
1_900397
1_928297
두 번째 열도 반환되도록 이 명령을 어떻게 실행합니까?
감사해요
답변1
기본 필드 구분 기호를 변경하지 않고 그대로 두고 사용앗~의나뉘다()첫 번째 필드의 기능입니다.
$ awk <data '{ split($1,f1,/_/) ; printf("%s_%s %s\n",f1[1],f1[2],$2) }'
답변2
이 시도,
sed 's/_[A-Z].* / /g' file
variant_id pval_nominal
1_752721 2.23485e-05
1_900397 3.04603e-05
1_928297 2.12455e-05