Bash 如何使用awk、perl或sed删除TSV文件中列的最后两个字符?

Bash 如何使用awk、perl或sed删除TSV文件中列的最后两个字符?,bash,perl,awk,sed,Bash,Perl,Awk,Sed,我想使用awk、sed或perl从文件A转到文件B: 文件A(选项卡分隔): 文件B(制表符分隔): 第一列中的每个id具有相同的字符数(列标题除外) 我试过使用sed's/ENSORLT*\..\t/ENSORLT*/g'FileA>FileB,但我认为*有问题 sed 's/\..//' file 如果您想要awk解决方案,为什么这里有Perl和sed标记?对不起,我更改了问题,我想要awk Perl或sed。 awk 'NR>1{sub(/..$/,"",$1)}1' OFS="\

我想使用
awk
sed
perl
从文件A转到文件B:


文件A(选项卡分隔):


文件B(制表符分隔):


第一列中的每个id具有相同的字符数(列标题除外)


我试过使用
sed's/ENSORLT*\..\t/ENSORLT*/g'FileA>FileB
,但我认为
*
有问题

sed 's/\..//' file

如果您想要awk解决方案,为什么这里有Perl和sed标记?对不起,我更改了问题,我想要awk Perl或sed。
awk 'NR>1{sub(/..$/,"",$1)}1' OFS="\t" file

target_id       length  eff_length      est_counts      tpm
ENSORLT00000000001  1614    1663.8  266 2.69411
ENSORLT00000000002  1641    1724.36 62.1756 0.607613
ENSORLT00000000003  1389    1363.82 68.8244 0.850394
ENSORLT00000000004  537 484.396 2   0.0695767
ENSORLT00000000005  520 374.865 0   0
ENSORLT00000000007  1809    2083.96 699 5.65227
ENSORLT00000000008  1098    1099.36 423.548 6.49226
sed 's/\..//' file
awk 'NR>1{sub(/..$/,"",$1)}1' OFS="\t" file

target_id       length  eff_length      est_counts      tpm
ENSORLT00000000001  1614    1663.8  266 2.69411
ENSORLT00000000002  1641    1724.36 62.1756 0.607613
ENSORLT00000000003  1389    1363.82 68.8244 0.850394
ENSORLT00000000004  537 484.396 2   0.0695767
ENSORLT00000000005  520 374.865 0   0
ENSORLT00000000007  1809    2083.96 699 5.65227
ENSORLT00000000008  1098    1099.36 423.548 6.49226