Alguns erros lá.
Primeiro, como sed
usa expressões regulares básicas, você precisa de \(
e \)
para criar um grupo de captura. A opção -r
ativa as expressões regulares estendidas, e é por isso que você não recebe o erro. Veja .
Em segundo lugar, você está colocando o grupo de captura no lugar errado. Se eu entendi corretamente, você pode fazer isso:
sed -e 's!^\(\s*access_log\)[^;]*;! /dev/stdout;!' your_file
Observe o uso de !
como delimitadores regex para evitar a necessidade de escapar das barras em /dev/stdout
.