2017-10-09 21 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 
相關問題