編集する

編集する

現在のファイルの内容を変更しようとしています。

orig.sas 

更新ファイルの内容を一致させます。

new.sas

orig.sasをnew.sasに置き換えると、いくつかの変更が行われますが、orig.sasは変更したくない多くのディレクトリを参照します。

次のコードを送信すると、orig.sasをnew.sasと同じにするために変更する必要があるすべての行を含む "changes.txt"スクリプトが出力されます。

diff -e orig.sas new.sas > changes.txt

changes.txtは次のとおりです(フル出力にはより多くの行があります)。

3668c
label DBMS=xlsx replace;
.
3649,3665d
3643d

ここでは、参照ディレクトリから変更されたすべての行を削除したため、コードの本文のみが影響を受けました。

このスクリプトをsedに送信できるようにする必要があると思います(目的はすべての変更を変更することです。txt)。

sed - orig.sas < changes.txt

しかし、orig.sasを直接上書きしたくないので、バージョン2ファイル(orig_v2.sasなど)に出力することをお勧めします。

私の進歩は以下から来ています。https://www.computerhope.com/unix/udiff.htm

答え1

diff -e結果はに供給(修正)する必要がありますed

努力する

diff -e orig.sas new.sas > changes.txt
echo wq >> changes.txt

ed orig.sas < changes.txt

どこ

  • wq〜する勝つ意識とキューuit、書いた文字数を印刷します。
  • オプションは--silent超過した数を出力しません。

詳細についてはを参照してくださいman ed

編集する

ソースファイルにdiffを適用しても違いはありませんcp new.sas orig_v2.sas

私はあなたがすでにこれについて考えていると思います:2つのalphaNとbravoN

diff -e alpha1.sas alpha2.sas > change12.txt

(cat change12.txt
 echo w bravo2.sas
 echo q ) | ed bravo.sas

bravoNに対するN個の変更が報告されます。alpha

関連情報