Marco A
Marco A

Reputation: 109

sed remove digits at end of the line

I need to find out how to delete up to 10 digits that are at the end of the line in my text file using sed.

For example if I have this:

ajsdlfkjasldf1234567890
asdlkjfalskdjf123456
adsf;lkjasldfkjas123

it should become:

ajsdlfkjasldf
asdlkjfalskdjf
adsf;lkjasldfkjas

can anyone help?

I have this, but its not working:

sed 's/[0-9]{10}$//g'

Upvotes: 2

Views: 10732

Answers (3)

jahroy
jahroy

Reputation: 22692

A quick look here suggests you should try this:

$ sed 's/[0-9]\{0,10\}$//g'

{ } should be escaped, unless you switch to extended regex syntax:

$ sed -r 's/[0-9]{0,10}$//g'

Upvotes: 0

Mithrandir
Mithrandir

Reputation: 25337

Have you tried this:

     sed 's/[0-9]+$//'

Your command would only match and delete exactly 10 digits at the end of line and only, if you enabled extended regular expressions (-E or -r, depending on your version of sed).

You should try

     sed -r 's/[0-9]{1,10}$//'

Upvotes: 7

Andrew Clark
Andrew Clark

Reputation: 208475

The following should work:

sed 's/[0-9]\{1,10\}$//' file

Regex syntax in sed requires backslashes before the brackets to use them for repetition, unless you use an extended regex option.

Upvotes: 2

Related Questions