다음 입력 파일이 있습니다.
target_id length eff_length est_counts tpm
ENST00000583162.1 1066 967 1.69899 1.18376
ENST00000583355.1 891 792 13.8057 11.7445
ENST00000582528.5 5342 5243 21.3223 2.74003
ENST00000497744.1 964 865 0 0
ENST00000482564.1 1856 1757 3.29538 1.26367
ENST00000356654.8 4351 4252 56.2725 8.91668
ENST00000396684.2 4290 4191 0.206617 0.0332162
ENST00000541029.1 855 756 3.14783 2.80537
ENST00000537488.1 899 800 2.37306 1.99857
ENST00000264010.8 3939 3840 354.642 62.2241
ENST00000401394.5 2978 2879 28.362 6.63735
ENST00000566078.1 1627 1528 4.9964 2.2031
ENST00000595290.5 1242 1143 0 0
ENST00000595330.1 692 593 0 0
ENST00000596998.2 588 489 0 0
ENST00000374514.7 1810 1711 53.7113 21.1503
.*
첫 번째 열에서 제거 하고 싶습니다 .
target_id length eff_length est_counts tpm
ENST00000583162. 1066 967 1.69899 1.18376
ENST00000583355. 891 792 13.8057 11.7445
ENST00000582528. 5342 5243 21.3223 2.74003
ENST00000497744. 964 865 0 0
ENST00000482564. 1856 1757 3.29538 1.26367
ENST00000356654. 4351 4252 56.2725 8.91668
ENST00000396684. 4290 4191 0.206617 0.0332162
ENST00000541029. 855 756 3.14783 2.80537
ENST00000537488. 899 800 2.37306 1.99857
ENST00000264010. 3939 3840 354.642 62.2241
ENST00000401394. 2978 2879 28.362 6.63735
ENST00000566078. 1627 1528 4.9964 2.2031
ENST00000595290. 1242 1143 0 0
ENST00000595330. 692 593 0 0
ENST00000596998. 588 489 0 0
ENST00000374514. 1810 1711 53.7113 21.1503
이 문제를 해결하기 위해 사용할 수 있는 sed 또는 awk 명령을 알려주십시오.
답변1
가장 간단한 방법은 .
각 줄의 첫 번째 숫자 이후의 모든 숫자를 제거하는 것입니다.
$ sed 's/\.[0-9]*/\./' file
target_id length eff_length est_counts tpm
ENST00000583162. 1066 967 1.69899 1.18376
ENST00000583355. 891 792 13.8057 11.7445
ENST00000582528. 5342 5243 21.3223 2.74003
ENST00000497744. 964 865 0 0
ENST00000482564. 1856 1757 3.29538 1.26367
ENST00000356654. 4351 4252 56.2725 8.91668
ENST00000396684. 4290 4191 0.206617 0.0332162
ENST00000541029. 855 756 3.14783 2.80537
ENST00000537488. 899 800 2.37306 1.99857
ENST00000264010. 3939 3840 354.642 62.2241
ENST00000401394. 2978 2879 28.362 6.63735
ENST00000566078. 1627 1528 4.9964 2.2031
ENST00000595290. 1242 1143 0 0
ENST00000595330. 692 593 0 0
ENST00000596998. 588 489 0 0
ENST00000374514. 1810 1711 53.7113 21.1503
.
그러면 줄의 첫 번째 줄을 찾고 .
그 뒤의 숫자를 바로 그 줄로 바꿉니다 .
. 그러나 이것이 성적표 ID이므로 아마도 필요하지 않을 것이므로 .
다음을 시도해 보십시오.
$ sed 's/\.[0-9]*//' file
target_id length eff_length est_counts tpm
ENST00000583162 1066 967 1.69899 1.18376
ENST00000583355 891 792 13.8057 11.7445
ENST00000582528 5342 5243 21.3223 2.74003
ENST00000497744 964 865 0 0
ENST00000482564 1856 1757 3.29538 1.26367
ENST00000356654 4351 4252 56.2725 8.91668
ENST00000396684 4290 4191 0.206617 0.0332162
ENST00000541029 855 756 3.14783 2.80537
ENST00000537488 899 800 2.37306 1.99857
ENST00000264010 3939 3840 354.642 62.2241
ENST00000401394 2978 2879 28.362 6.63735
ENST00000566078 1627 1528 4.9964 2.2031
ENST00000595290 1242 1143 0 0
ENST00000595330 692 593 0 0
ENST00000596998 588 489 0 0
ENST00000374514 1810 1711 53.7113 21.1503
첫 번째 열에 값이 없으면 .
이 명령은 사용 가능한 다음 열과 .
숫자를 변경합니다. 첫 번째 열을 명시적으로 제한하려면 다음 중 하나를 사용할 수 있습니다.
앗
awk -v OFS='\t' '{sub(/\.[0-9]*/,"",$1)}1' file
또는 후행을 유지하십시오
.
.awk -v OFS='\t' '{sub(/\.[0-9]*/,".",$1)}1' file
GNU sed
sed -E 's/^(\S+)\.[0-9]*/\1/' file
또는 후행을 유지하십시오
.
.sed -E 's/^(\S+)\.[0-9]*/\1./' file
대부분의 다른 sed 구현:
sed -E 's/^([^[:blank:]]*)\.[0-9]*/\1/' file
모든 sed:
sed 's/^\([^[:blank:]]*\)\.[0-9]*/\1/' file
진주
perl -pe 's/^(\S+)\.\d+/\1/' file
또는 후행을 유지하십시오
.
.perl -pe 's/^(\S+)\.\d+/\1./' file
답변2
주문하다
awk '{gsub(/\.*/,"",$1);print $0}' file.txt
산출
target_id length eff_length est_counts tpm
ENST000005831621 1066 967 1.69899 1.18376
ENST000005833551 891 792 13.8057 11.7445
ENST000005825285 5342 5243 21.3223 2.74003
ENST000004977441 964 865 0 0
ENST000004825641 1856 1757 3.29538 1.26367
ENST000003566548 4351 4252 56.2725 8.91668
ENST000003966842 4290 4191 0.206617 0.0332162
ENST000005410291 855 756 3.14783 2.80537
ENST000005374881 899 800 2.37306 1.99857
ENST000002640108 3939 3840 354.642 62.2241
ENST000004013945 2978 2879 28.362 6.63735
ENST000005660781 1627 1528 4.9964 2.2031
ENST000005952905 1242 1143 0 0
ENST000005953301 692 593 0 0
ENST000005969982 588 489 0 0
ENST000003745147 1810 1711 53.7113 21.1503