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

我使用了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

最佳答案

您可以通过简单的'_'替换来完成对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


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

关于linux - 如何删除栏中的下划线和下划线后的数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53939376/

10-13 08:52