What's wrong with my lookahead regex in GNU sed?

前端 未结 3 483
感动是毒
感动是毒 2020-11-30 02:42

This is what I\'m doing (simplified example):

gsed -i -E \'s/^(?!foo)(.*)$/bar\\1/\' file.txt

I\'m trying to put bar in front

相关标签:
3条回答
  • 2020-11-30 03:25

    As far as I know sed has not neither look-ahead nor look-behind. Switch to a more powerful language with similar syntax, like perl.

    0 讨论(0)
  • 2020-11-30 03:25
    sed -i '/^foo/! s/^/bar/' file.txt
    
    • -i change the file in place
    • /^foo/! only perform the next action on lines not ! starting with foo ^foo
    • s/^/bar/ change the start of the line to bar  
    0 讨论(0)
  • 2020-11-30 03:36

    You use perl compatible regular expression (PCRE) syntax which is not supported by GNU sed. You should rewrite your regex according to SED Regular-Expressions or use perl instead.

    0 讨论(0)
提交回复
热议问题