Quando você faz isso:
$ sed -i 's/\parallel[.*]\parallel/\norm\{\}/g' a.txt
, você não está usando grupos de captura.
Em []
, você especifica a classe de caractere. A classe de caracteres é um par de símbolos que podem ser substituídos por um deles. Assim, RE como [.*]
corresponde exatamente a um de .
ou *
, não de "nenhuma sequência de caracteres".
Os grupos de captura são indicados por \(RE\)
. Assim, você deve substituir []
por \(\)
, assim:
$ sed -i 's/\parallel\(.*\)\parallel/\norm{}/g' a.txt
, e você poderá acessá-lo com .