如何删除列中的下划线和下划线后的数字?

时间:2018-12-27 03:19:39

标签: linux

为了匹配另一个文件,我需要删除第一列中所有下划线和下划线之后的数字。

我使用了sed工具,确实删除了第一列中下划线和下划线之后的下划线和字符串,但是我删除了后面的所有其他列,我想保留其他列(每列为用制表符分隔)。我是一个刚开始的新手。希望有人能告诉我该怎么做,谢谢。

需要处理的文本文件如下:(test.txt)

ENST00000515896.1   0.177145    0.356609
ENST00000425026.1_1 0.024620    0.049561
ENST00000286448.11_1_PAR_Y  8.465151    17.041147
ENST00000479687.6_1_PAR_Y   0.002051    0.004128

尝试sed

$ sed 's/_.\+//g' test.txt 

预期结果:

ENST00000515896.1   0.177145    0.356609
ENST00000425026.1       0.024620    0.049561
ENST00000286448.11  8.465151    17.041147
ENST00000479687.6   0.002051    0.004128

实际结果:

ENST00000515896.1   0.177145    0.356609
ENST00000425026.1
ENST00000286448.11
ENST00000479687.6

2 个答案:

答案 0 :(得分:2)

您可以通过简单的'_'替换来完成sed的修整,以及其余的后续操作,例如

$ sed 's/_[^ \t]*//' test.txt
ENST00000515896.1 0.177145 0.356609
ENST00000425026.1 0.024620 0.049561
ENST00000286448.11 8.465151 17.041147
ENST00000479687.6 0.002051 0.004128

仔细检查一下,如果还有其他问题,请告诉我。

答案 1 :(得分:0)

您可以尝试使用Perl,

$ perl -pe ' s/_.+?\s/ /g' kdong.txt
ENST00000515896.1   0.177145    0.356609
ENST00000425026.1 0.024620    0.049561
ENST00000286448.11  8.465151    17.041147
ENST00000479687.6   0.002051    0.004128