2017-10-09 80 views
2

我想从文件A的去使用awksedperl到文件B:如何使用awk,perl或sed删除TSV文件中列的最后两个字符?

文件A(制表符分隔):

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

文件B(制表符分隔):

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 

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

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

+0

为什么这有Perl和sed标签,如果你想要一个awk解决方案? – Borodin

+0

对不起,我改变了这个问题,我想要awk perl或sed。 – Corend

回答

1
sed 's/\..//' file 

................

0

使用Perl饼:

perl -pi -e 's/\..//' file 

...为competeness ;-)

0
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 
相关问题