Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing parts of a string that contain digit with SED/Perl

I have a data that looks like this:

AB208804_1 446 576 AB208804_1orf 0
AB208804_20 446 576 AB208804_20orf 0

I want to convert them into this:

AB208804 446 576 AB208804orf 0
AB208804 446 576 AB208804orf 0

just by removing _\digit part in column 1 and 4.

Why this line doesn't work:

sed 's/_\d+//g'

What's the correct way to do it (one-liner)?

like image 793
neversaint Avatar asked Dec 28 '22 09:12

neversaint


2 Answers

You need the -r switch and a character class for the sed.

$ echo "AB208804_1 446 576 AB208804_1orf 0" | sed -r 's/_[0-9]+//g'
AB208804 446 576 AB208804orf 0

Or, since you asked; in perl:

$ echo "AB208804_1 446 576 AB208804_1orf 0" | perl -ne 's/_\d+//g; print $_'
AB208804 446 576 AB208804orf 0
like image 54
zen Avatar answered Jan 14 '23 04:01

zen


Try:

sed 's/_[0-9]\+//g' 
like image 30
codaddict Avatar answered Jan 14 '23 04:01

codaddict