Solved sed: negation of a range is broken?

aragats

Daemon

Reaction score: 473
Messages: 1,137

I would expect the same output of the following two commands, but the first one looks wrong to me:
Code:
% echo abc^ABC.123 | sed 's/[^A-z0-9]/_/g'
abc^ABC_123
% echo abc^ABC.123 | sed 's/[^[:alnum:]]/_/g'
abc_ABC_123
By the way, gsed does the same. Am I missing something?..
 

ljboiler

Well-Known Member

Reaction score: 98
Messages: 332

Look at the range you specify on the first command: A-z. That range includes a few characters between the A-Z and a-z, including the ^. You would need to specify the range as A-Za-z.
 
Top