Isso usa a sintaxe de regex estendida -r
, o que elimina muito da desordem. Além disso, como você já conhece alguns dos valores de campo, na verdade, você não precisa fazer referência de volta a eles, novamente reduzindo a desordem (e a sobrecarga).
&
é um valor especial de substituição: ele contém todo o padrão correspondente. Usando o &
, novamente reduz a desordem. Como não é uma referência inversa, tem significativamente menos sobrecarga.
Eu usei ( +)
vs. ( *)
. O +
pressupõe que haja pelo menos um espaço entre os campos de entrada. Basta alterá-lo para o *
que não é o caso.
EXPL=
dom=oracle
typ=hard
itm=nproc
val=666
echo "oracle hard nproc 131072" |
sed -r "s/^$dom( +)$typ( +)$itm( +).*/$EXPL#&\n$dom$typ$itm$val/"
saída
#oracle hard nproc 131072
oracle hard nproc 666