替换第一列中的字符串

替换第一列中的字符串

我有一个如下所示的文件:

>TCONS_00000066_1     [3    -   170]
>TCONS_00000066_2     [174  -   206]
>TCONS_00000066_3     [2    -   223]
>TCONS_00000066_4     [210  -   281]
>TCONS_00000066_5     [227  -   316]
>TCONS_00000066_6     [1    -   324]
>TCONS_00000066_7     [285  -   338]
>TCONS_00000066_8     [335  -   373]
>TCONS_00000066_9     [342  -   377]
>TCONS_00000066_10    [328  -   465]
>TCONS_00000066_11    [377  -   487]
>TCONS_00000066_12    [469  -   546]
>TCONS_00000066_13    [390  -   551]
>TCONS_00000066_14    [518  -   556]
>TCONS_00000066_15    [537  -   490]
>TCONS_00006042_1     [9    -   62]
>TCONS_00006042_2     [87   -   146]
>TCONS_00006042_3     [150  -   203]
>TCONS_00006042_4     [2    -   220]
>TCONS_00006042_5     [1    -   255]

该文件以制表符分隔。我想只删除_1and _2....之后的每个>TCONS_0000****.所有列的其余部分将按原样存在。

喜欢:

>TCONS_00000066    [3    -   170]
>TCONS_00000066    [174  -   206]
>TCONS_00000066    [2    -   223]
>TCONS_00000066    [210  -   281]
>TCONS_00000066    [227  -   316]
>TCONS_00000066    [1    -   324]
>TCONS_00000066    [285  -   338]
>TCONS_00000066    [335  -   373]

注意:每个>TCONS_*包含8位数字,例如>TCONS_00000066"...">TCONS_00987652"

答案1

这应该适合你

cat file.txt | sed 's/\([0-9]\)_[0-9]\+\t/\1\t/'

搜索一个数字(名为 \1),后跟一个下划线,后跟一个或多个数字,后跟一个制表符,然后替换为名为 \1 和一个制表符

答案2

使用awk:

awk -F'[_ ]' '{$3=""}1' file > newfile

相关内容