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