字串和檔案之間的區別

字串和檔案之間的區別

基本上我想檢查同一文件前後的差異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

相關內容