文字列とファイルの差分

文字列とファイルの差分

基本的には同じファイルの変更前と変更後の差分を確認したいのですが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

diff2 つのファイル オペランドが必要です。here 文字列を使用して、入力をdiff標準入力に渡します。

diff標準入力から読み取るには、-ファイル名として以下を使用します。

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

あるいは、もっとポータブルに言えば、

$ sed 'expression' file | diff file -

やの<(...)ような、によるプロセス置換をサポートするシェルを使用している場合は、これが別の解決策になる場合があります。bashksh93

$ diff file <( sed 'expression' file )

プロセス置換はファイルとして表示されdiff、実質的に「同じ」になります。

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

関連情報