Diff entre uma string e um arquivo

1

Basicamente eu quero verificar a diferença do mesmo arquivo antes e depois de um sed

Tentou 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 recebendo:

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

Qual é a maneira correta de fazer isso? Obrigado.

    
por Moshe 22.05.2017 / 09:34

1 resposta

4

diff precisa de dois operandos de arquivo. Com uma string here, você passa a entrada para diff em sua entrada padrão.

Para tornar diff da entrada padrão, use - como o nome do arquivo:

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

ou, mais portável,

$ sed 'expression' file | diff file -

Se você estiver usando um shell que suporte substituições de processo com <(...) , como bash e ksh93 , isso pode ser outra solução:

$ diff file <( sed 'expression' file )

A substituição do processo será mostrada como um arquivo para diff e é praticamente "o mesmo que":

$ sed 'expression' file >tempfile
$ diff file tempfile
$ rm tempfile
    
por 22.05.2017 / 09:37