このページの内容

2.5.1.2 ed書式の詳細

ed出力書式は、1つ以上の差分のhunkからなります。ファイルの末尾に近い変更から先に並ぶため、行数を変えるコマンドが、その後のコマンドでedが行番号を解釈する方法に影響しません。ed書式のhunkは次のようになります。

change-command
to-file-line
to-file-line...
.

edはピリオド1つだけの行を入力の終わりとして使います。そのためGNU diffは、変更される行がピリオド1つだけの場合、その代わりにピリオド2つを書き、その後に2つのピリオドを1つに変更するedコマンドを書くことで保護します。ed書式は不完全な行を表せないため、2番目のファイルが変更された不完全な行で終わっている場合、diffはエラーを報告した後、改行が追加されたものとして扱います。

変更コマンドには3種類あります。各コマンドは、最初のファイルの行番号またはコンマで区切った行範囲と、行う変更の種類を示す1文字からなります。行番号はすべて、ファイルの元の行番号です。変更コマンドの種類は次のとおりです。

‘la’

2番目のファイルのテキストを、最初のファイルのl行目の後に追加します。たとえば「8a」は、その後に続く行をファイル1の8行目の後に追加することを意味します。

‘rc’

最初のファイルの範囲rにある行を、その後に続く行で置き換えます。追加と削除を組み合わせたものに相当しますが、よりコンパクトです。たとえば「5,7c」は、ファイル1の5〜7行目をファイル2のテキストと同じ内容に変更することを意味します。

‘rd’

最初のファイルから範囲rにある行を削除します。たとえば「5,7d」は、ファイル1の5〜7行目を削除することを意味します。