regex - Sed: Why does [^\]] not seem to work? -


i trying match/output text before first ] appeared:

sed -i -r 's/^([^\]]*).*/\1/' "$file.tmp" 

which surprisingly not work.

however, searching other bracket work:

sed -i -r 's/^([^\[]*).*/\1/' "$file.tmp" 

is sed bug or doing wrong?

i know can work around using .*? enough issue had me stumped long enough i'd know if there missed.

(according --version, using gnu sed 4.2.2.)

you don't need quote closing bracket ]. in fact regular expression parsed [^\] followed stray ].

you want use following regular expression (note lack of quoting \):

sed -i -r 's/^([^]].*).*/\1/' "$file.tmp" 

the second regular expression works chance because [ has no special meaning in [] expression you'll find match lines start \.

in fact, when using ] in [] group, must first character, or second if first 1 ^.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -