私がするなら:
diff <(cat old) <(cat new)
これはdiffプログラム内で内部的に動作しますか? Bashスクリプトを使用して同じトリックをどのように達成できますか?
ベストアンサー1
自分で試してみてください。
echo <(echo) <(echo)
Diff は 2 つのファイルを読み込みます。
<(...)
これをbashスクリプトの引数として使用したい場合は、ファイルを「巻き戻す」(または再度開くことはできません)できないことに注意してください。だから一度読むと消えます。read
一行ずつ処理することもできますし、grep
何でもできます。何度も処理する必要がある場合は、その内容を変数に保存してください。
input=$(cat "$1"; printf x) # The "x" keeps the trailing empty lines.
input=${input%x}
または、一時ファイルにコピーして繰り返し読みます。
tmp=$(mktemp)
cat "$1" > "$tmp"