Unterschied zwischen einem String und einer Datei

Unterschied zwischen einem String und einer Datei

Im Grunde möchte ich den Unterschied der gleichen Datei vor und nach einemsed

Versucht auszuführen:

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

Und

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

Und

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

Immer erhalten:

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

Wie geht das richtig? Danke.

Antwort1

diffbenötigt zwei Dateioperanden. Mit einem Here-String übergeben Sie die Eingabe an diffdie Standardeingabe.

Um diffdas Lesen von der Standardeingabe durchzuführen, verwenden Sie -als Dateinamen:

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

oder, tragbarer,

$ sed 'expression' file | diff file -

Wenn Sie eine Shell verwenden, die Prozessersetzungen mit <(...), like bashund unterstützt ksh93, kann dies eine weitere Lösung sein:

$ diff file <( sed 'expression' file )

Die Prozessersetzung wird auch als Datei angezeigt diffund ist praktisch „dasselbe wie“:

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

verwandte Informationen