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 .