アドレスは、バッファー内の行番号を表します。ed は現在アドレスを保持し、アドレスを指定しない場合、通常はこれをコマンドの既定のアドレスとして使います。ファイルを最初に読み込むと、現在アドレスはそのファイルの最終行のアドレスに設定されます。一般に、現在アドレスはコマンドが作用した最後の行のアドレスに設定されます。
アドレスが行番号を表すという規則の例外の1つは、アドレス「0」(ゼロ)です。これは「バッファーの先頭」を意味し、意味のある場所であれば有効です。
アドレス範囲は、コンマ(「,」)またはセミコロン(「;」)で区切った2つのアドレスです。範囲の最初のアドレスの値は、2番目の値を超えることはできません。
セミコロンで区切った範囲では、2番目のアドレスを計算する前に、現在アドレス(「.」)を最初のアドレスに設定します。2番目のアドレスが正規表現を含む場合、この機能で検索の開始行を設定できます。アドレス「0」(ゼロ)も開始点として有効なので、「0;/re/」でバッファーの最初の行の re に一致させられます。
コンマやセミコロンの区切りのどちら側でも、アドレスを省略できます。範囲で最初のアドレスだけを指定すると、2番目のアドレスもその値に設定されます。2番目のアドレスだけを指定すると、アドレスの組はそれぞれ「1,addr」と「.;addr」になります。n > 2 の n 個のアドレスを指定すると、対応する範囲は、その n 個の最後の2つのアドレスで決まります。アドレスが1つだけ必要な場合は、最後のアドレスを使います。アドレスを取らないコマンドに1つでもアドレスを与えるとエラーになります。
行アドレスは次のように構成します。
.バッファー内の現在行(のアドレス)。
$バッファー内の最終行。
nバッファー内の n 番目の行。n は「0,$」の範囲の数値です。
+nn 行後の行。n は非負の数値です。
-nn 行前の行。n は非負の数値です。
+次の行。「+1」と等価で、繰り返すと効果が累積します。
-前の行。「-1」と等価で、繰り返すと効果が累積します。
,バッファーの最初の行から最後の行まで。アドレス範囲「1,$」と等価です。
;バッファーの現在行から最後の行まで。アドレス範囲「.;$」と等価です。
/re/[I]正規表現 re を含む次の行。必要なら検索はバッファーの先頭に戻り、現在行まで下方向に続けます。接尾辞「I」は GNU 拡張で、ed が re による照合で大文字と小文字を区別しないようにします。
?re?[I]正規表現 re を含む前の行。必要なら検索はバッファーの末尾に戻り、現在行まで上方向に続けます。接尾辞「I」は GNU 拡張で、ed が re による照合で大文字と小文字を区別しないようにします。
'xアポストロフィーと x の2文字で、「k」(マーク)コマンドであらかじめ印を付けた行を指定します。「x」は移植可能な文字集合「[a-z]」の小文字です。
アドレスの後には、1つ以上のアドレスオフセットを、必要に応じて空白で区切って続けられます。オフセットは次のように構成します。
計算途中のアドレスの値が負である、またはバッファーの最終行のアドレスより大きい場合は、エラーにはなりません。最終的なアドレスの値が負である、またはバッファーの最終行のアドレスより大きい場合はエラーになります。正規表現による検索で一致する行が見つからない場合もエラーになります。