A saída que recebo com o GNU sed
e com o nativo sed
no OpenBSD é
'''{.bash .numberLines startFrom="1" .lineAnchors}
ls
'''{. .numberLines startFrom="1" .lineAnchors}
Isso ocorre porque sua expressão corresponde a zero ou mais caracteres não espaciais após os três backticks. Alterar [^[:space:]]*
para [^[:space:]]+
forçaria a correspondência de pelo menos um caractere não espacial.
Isso fornece a saída esperada de
'''{.bash .numberLines startFrom="1" .lineAnchors}
ls
'''
Você também pode usar aspas simples em suas atribuições de variáveis. Isso faz com que as strings sejam mais nítidas, sem a necessidade de escapar de caracteres especiais para protegê-las do shell:
orig='(''')([^[:space:]]+)'
new='{. .numberLines startFrom="1" .lineAnchors}'
sed -i -E "s|$orig|$new|g" "$InterimFilePath"