現在のファイルの内容を変更しようとしています。
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つのalpha
Nとbravo
N
diff -e alpha1.sas alpha2.sas > change12.txt
(cat change12.txt
echo w bravo2.sas
echo q ) | ed bravo.sas
bravo
Nに対するN個の変更が報告されます。alpha