Diferença entre uma string e um arquivo

Diferença entre uma string e um arquivo

Basicamente quero verificar a diferença do mesmo arquivo antes e depois de umsed

Tentei executar:

diff /opt/postTrades.sh <<< $(sed 's/1\ MIN/10\ MIN/g' /opt/postTrades.sh)

e

diff <<< $(sed 's/1\ MIN/10\ MIN/g' /opt/postTrades.sh) < /opt/postTrades.sh 

e

diff <<< (sed 's/1\ MIN/10\ MIN/g' /opt/postTrades.sh) < /opt/postTrades.sh

Sempre obtendo:

diff: missing operand after '/opt/postTrades.sh'
diff: Try 'diff --help' for more information.

Qual é a maneira correta de fazer isso? Obrigado.

Responder1

diffprecisa de dois operandos de arquivo. Com uma string here, você passa a entrada para diffsua entrada padrão.

Para fazer diffa leitura da entrada padrão, use -como nome do arquivo:

$ diff file - <<<"$( sed 'expression' file )"

ou, mais portável,

$ sed 'expression' file | diff file -

Se você estiver usando um shell que suporta substituições de processos com <(...), like bashe ksh93, esta pode ser outra solução:

$ diff file <( sed 'expression' file )

A substituição do processo aparecerá como um arquivo diffe é virtualmente "igual a":

$ sed 'expression' file >tempfile
$ diff file tempfile
$ rm tempfile

informação relacionada