2015-03-02 56 views
0

在所有文件的第11列中,我想删除最后一位数字 - 一个0.我不知道如何快速执行此操作?在几个文件中删除列中所有行的最后一位数字

输入文件示例

chr1 13281 C G 20 4 16.670 S 28 3 9.680 S Germline 0.006377004201320391 0.8803370017576622 19 9 2 1 
chr1 13302 C T 12 10 45.450 Y 20 11 35.480 Y Germline 3.992679813441744E-8 0.8451888548995793 13 7 9 2 
chr1 13402 G C 114 0 00 G 153 2 1.290 S Somatic 1.0 0.3311046995506439 139 14 1 1 
chr1 136048 C T 19 12 38.710 Y 32 7 17.950 Y Germline 4.6433264291396187E-7 0.98655920157275 15 17 2 5 
chr1 871269 A C 12 2 14.290 M 26 2 7.140 M Germline 0.058009817045962773 0.9000000000000099 4 22 0 2 
chr1 881627 G A 0 31 1000 A 0 43 1000 A Germline 4.280406726905674E-44 1.0 21 22 

输出

chr1 13281 C G 20 4 16.670 S 28 3 9.68 S Germline 0.006377004201320391 0.8803370017576622 19 9 2 1 
chr1 13302 C T 12 10 45.450 Y 20 11 35.48 Y Germline 3.992679813441744E-8 0.8451888548995793 13 7 9 2 
chr1 13402 G C 114 0 00 G 153 2 1.29 S Somatic 1.0 0.3311046995506439 139 14 1 1 
chr1 136048 C T 19 12 38.710 Y 32 7 17.95 Y Germline 4.6433264291396187E-7 0.98655920157275 15 17 2 5 
chr1 871269 A C 12 2 14.290 M 26 2 7.14 M Germline 0.058009817045962773 0.9000000000000099 4 22 0 2 
chr1 881627 G A 0 31 1000 A 0 43 100 A Germline 4.280406726905674E-44 1.0 21 22 
+2

注意最后一行中的'1000'将变为'100'。这也很好吗? – fedorqui 2015-03-02 14:22:04

+0

他的示例输出显示了100个字段。 – Phylogenesis 2015-03-02 14:22:36

+2

是的,我知道,但以防万一,因为它不是相同的转换'7.140'到'7.14'比转换成一百。 – fedorqui 2015-03-02 14:23:59

回答

3

你可以用awk,

awk '{sub(/[0-9]$/, "", $11)}1' file 
+0

这是个好主意,所以++。我怀疑OP会希望将'OFS'设置为'\ t';该数据看起来是制表符分隔的。 – Wintermute 2015-03-02 14:47:39

0
sed 's/\(\([^[:space:]]\{1,\}[[:space:]]\{1,\}\)\{10\}[^[:space:]]*\)0/\1/' YourFile 
  • -i选项f,或者内联编辑(--POSIX由于GNU sed在这种情况下)
+2

你可以包含'-r'选项来摆脱所有的转义,我相信它是'--posix'(小写)。 – 2015-03-02 18:48:08

+0

posix和{{(不符合,但你是对的,它是GNU版本的一个好选择 – NeronLeVelu 2015-03-03 08:30:07

相关问题