Não está claro exatamente o que mais precisa ser escapado na macro a seguir para permitir que seja usado com awk ou sed no FreeBSD.
define(`RELAY_MAILER_ARGS', `TCP $h 2525')dnl
Aqui está um comando awk que tenta inserir a linha acima na linha 90 abaixo da SMART_HOST
configuração.
awk 'NR==90 { print "define(\`RELAY_MAILER_ARGS\', \`TCP $h 2525\')dnl"}1' example.com.mc
O comando resulta no seguinte erro:
Unmatched '"'.
Nota para futuros editores : a crase/aspas simples não é um erro de digitação. Esta é uma peculiaridade antiga da linguagem m4 que é usada para escrever as macros para configuração do Sendmail: "m4 usa aspas simples (abrindo "`" e fechando "'") para citar argumentos"
Nota adicional : escapes octais parecem não funcionar quando usados sed
no FreeBSD. Nessa situação, use os xNN
caracteres hexadecimais de escape nessa situação.
Você não pode escapar de aspas simples, pois o próprio comando é cercado por aspas simples, mas você pode usar um código de escape octal
\047
para representar'
em POSIX awk. Além disso, você pode usar um código de escape hexadecimal\x27
no GNU awk (gawk
).Do Guia do Usuário GNU Awk , 3.2 Sequências de Escape :
Se você também quiser usar
\140
(ou\x60
) para representar o backtick :