ファイルA
Apples
Bananas
Clementines
Dates
文書B
Apples
Blueberries
Cherries
Dates
Clementines > Cherries
AとBを比較してCに適用すると、その行は変更されますが、2番目の行(ブルーベリー/ブラックカレント/その他)は無視されるパッチを作成したいと思います。
ファイルC(パッチ前)
Apples
Blackcurrants
Clementines
Dates
ファイルC(パッチ後)
Apples
Blackcurrants
Cherries
Dates
理想的には、シーケンスが常にファイルの同じ場所に表示されるという保証がないため、コンテキスト付きのパッチが必要です。私のビューには、コンテキストに前後に何らかの種類のワイルドカード行が含まれているようApples
ですClementines
。
必要に応じて手動で出力を編集することを望んでいますが、diff
コンテキストベースの違いを生成し、特定の正規表現マッチングの代わりにワイルドカードを使用する反復可能なコマンドがあればよいでしょう。
patch
私はこのパッチをCファイルを持っている友達に送り、手動で編集する必要なしにコマンドを実行させたいと思います。
これはどのように達成できますか?
ベストアンサー1
GNUを使用すると仮定すると、必要なdiff
正確なパッチを作成することはできません。diff
与えられた正規表現に一致する行を無視するように要求できます。-I
オプションを含めるただし、そのような変更のみを含むブロック全体は無視されます。この場合、すべての塊(コンテキストがなくても)は「Banana」と「Clementine」の行を変更します。
diff
カラフルなパッチ編集を含まない1つの可能性は、スクリプトの作成をed
要求することです。
diff -e
これは生産します
2,3c
Blueberries
Cherries
.
これを変更して、必要なパッチを作成できます。
3,3c
Cherries
.