1
sed -i.bak -e 's/^\s+({\s+group.+;\s+port.+;)\s+cp.+/ \1 }/g' <file>
愚蠢的sed /正則表達式錯誤?
我得到一個錯誤:
sed: -e expression #1, char 48: invalid reference \1 on ``s' command's RHS
我以前做過這些sed命令幾次,都沒有這個問題。我絆倒了一個我錯過的細微角色模式嗎?我已經在網站上測試了正則表達式,所以我很確定它沒有問題。我已經在網上查看了許多sed示例,但無法找到任何內容。提前致謝。 實施例線路相匹配:
{ group = "127.0.0.1"; port = 222; cpu = 33; },
是否與''s/^ [[工作e:]] * \({[[:space:]] * group。*; [[:space:]] * port。*; \)[[:space:]] * cp。*/\ 1}/g''? –
我不知道這是否是主要問題,但是:捕獲括號需要轉義,不支持'\ s',您應該使用'[\ t]'或者使用posix字符類,+量詞也不支持。 –
這個錯誤是因爲在'sed'的默認BRE模式下,您正在使用未轉義的'(...)',它不會生成捕獲的組。你需要使用'-E'標誌來擴展正則表達式模式,然後'(...)'將它作爲一個組。除了'\ s'應該被'[\ t]替換' – anubhava