Replacement with sed

Asked

Viewed 62 times

1

I have to replace some files and I’m not able to write an expression that works. I have this text at the beginning of each line:

NF3-9-16S_S9_1456|M02255:210:000000000-B9K3P:1:1101:14397:18152 1:N:0:9|o:50|m/o:0.720000|MR:n=0;R1=34;R2=2|Q30:p=97;p=100|CO:0|mismatches:36

And he has to stay that way:

Re1_91910_1456

I should only keep the part where the number "1456" is, that is to change the beginning and delete everything that comes after the number.

  • 2

    And where that part comes from Re1_91910?

1 answer

0

Answer

Use this regex to capture what you want:

NF.*?(\d*)\|.*

And that part in the substitution

Re1_91910_$1

Resulting in:

Re1_91910_1456

You can test the operation of this regex here.

Explanation:

This regex will capture all digits after the _ and before the character | placing them in the capture group 1, after that in the replacement regex part, we add their fixed character string Re1_91910_ and what was captured in group 1, indicated by $1, so you get the result you’d like.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.