Diferencia entre una cadena y un archivo

Diferencia entre una cadena y un archivo

Básicamente quiero comprobar la diferencia del mismo archivo antes y después de unsed

Intenté ejecutar:

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

y

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

y

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

Siempre obteniendo:

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

¿Cuál es la forma correcta de hacerlo? Gracias.

Respuesta1

diffnecesita dos operandos de archivo. Con una cadena aquí, pasa la entrada a diffsu entrada estándar.

Para realizar diffla lectura desde la entrada estándar, utilice -como nombre de archivo:

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

o, más portátilmente,

$ sed 'expression' file | diff file -

Si está utilizando un shell que admite sustituciones de procesos con <(...), like bashy ksh93, esta puede ser otra solución:

$ diff file <( sed 'expression' file )

El proceso de sustitución se mostrará como un archivo diffy es prácticamente "igual que":

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

información relacionada