字符串和文件之间的区别

字符串和文件之间的区别

基本上我想检查同一文件前后的差异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 -

如果您使用的 shell 支持使用<(...)、 和 等bash进程替换ksh93,这可能是另一种解决方案:

$ diff file <( sed 'expression' file )

进程替换将显示为文件,diff并且实际上“相同”:

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

相关内容