次の入力ファイルがあります。
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