sed-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

sed 4.7 little behaviour change on regexp interval


From: Lorenzo Gaggini
Subject: sed 4.7 little behaviour change on regexp interval
Date: Thu, 3 Jan 2019 13:17:36 +0000

Hi,

I recently upgrade to sed version 4.7 from sed 4.5 (I'm on Archlinux)
and I noticed a litte behaviour change on regexp interval.

I have a script working correctly on sed 4.5 using this sed expression
regexp:

sed -e 's/[^a-Z-]//g'

On new sed 4.7 this sed expression gives me an error:

sed: -e expression #1, char 12: Invalid range end

The same regexp expression works correctly on grep 3.3.

Some tests:

$ cat sed_test
test
test11
Test12
test-test11
Test-Test12


$ grep --version | head -1
grep (GNU grep) 3.3

$ grep -e [^a-Z-] sed_test
test11
Test12
test-test11
Test-Test12


$ sed --version | head -1
sed (GNU sed) 4.5

$ sed -e 's/[^a-Z-]//g' sed_test
test
test
Test
test-test
Test-Test


$ sed --version | head -1
sed (GNU sed) 4.7

$ sed -e 's/[^a-Z-]//g' sed_test
sed: -e expression #1, char 12: Invalid range end


It's not a big problem and maybe the expression is not the clearest
for the purpose.

These expressions work both correctly also on sed 4.7:

$ sed -e 's/[^a-zA-Z-]//g' sed_test
test
test
Test
test-test
Test-Test

$ sed -e 's/[^[:alpha:]-]//g' sed_test
test
test
Test
test-test
Test-Test

Maybe I'm missing something obvious.

Best regards.


-- 
Lorenzo Gaggini 
Register.it / Dada.eu
Gnu/Linux Sysadmin
Email: address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]