
По сути, я хочу проверить разницу одного и того же файла до и после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