Разница между строкой и файлом

Разница между строкой и файлом

По сути, я хочу проверить разницу одного и того же файла до и послеsed

Попробовал запустить:

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

и

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

и

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

Всегда получаю:

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

Как правильно это сделать? Спасибо.

решение1

diffнужны два файловых операнда. С помощью here-string вы передаете ввод на diffего стандартный ввод.

Чтобы выполнить diffчтение из стандартного ввода, используйте -в качестве имени файла:

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

или, более переносимо,

$ sed 'expression' file | diff file -

Если вы используете оболочку, которая поддерживает подстановку процессов с помощью <(...), например bashи ksh93, это может быть другим решением:

$ diff file <( sed 'expression' file )

Подстановка процесса будет отображаться в виде файла diffи фактически «такая же, как»:

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

Связанный контент