sed: cut out a substring following various patterns

There is a list of identifiers I want to modify:

3300000526.a:P_A23_Liq_2_FmtDRAFT_1000944_2,
200254578.a:CR_10_Liq_3_inCRDRAFT_100545_11, 
3300000110.a:BSg2DRAFT_c10006505_1,
3300000062.a:IMNBL1DRAFT_c0010786_1,
3300000558.a:Draft_10335283_1 

I want to remove all starting from first . and first _ after DRAFT (case-insensitive), i.e.:

3300000526_1000944_2,
200254578_100545_11, 
3300000110_c10006505_1,
3300000062_c0010786_1,
3300000558_10335283_1 

I am using sed 's/.a.*[a-zA-Z0-9]DRAFT_.*[^_]_[a-zA-Z0-9]//g' but it ignores the first _ after DRAFT and does this:

3300000526_2,
200254578_11, 
3300000110_1,
3300000062_1,
3300000558_1 

P.S. There can be various identifiers and I tried to show a little portion on their variance here, but they all keep same pattern.

I'd be grateful for corrections!



Read more here: https://stackoverflow.com/questions/66281576/sed-cut-out-a-substring-following-various-patterns

Content Attribution

This content was originally published by plnnvkv at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: