入力はアドレスに関係なくパターンスペースにまずコピーされる

アドレスは、入力行がパターンスペースにコピーされた後、それにコマンドを適用するかを決める条件のことであって、入力行をパターンスペースにコピーするかを決める条件ではない

この流れの理解のために、下記のように「2」という2行目を指定するアドレスと「d」という削除するコマンドのスクリプトをみると、

input='1行目
2行目
3行目'

echo "$input" | sed '2 d'

出力はこうなる。

1行目
3行目
  1. まず、入力の1行目がパターンスペースにコピーされる。
  2. アドレスが「2行目」という条件なので、現在のパターンスペースにはdコマンドは適用されない。ここでいう「2行目」という条件は「パターンスペース内の2行目」ではなく、パターンスペースの元になった直近の入力行が2行目という意味。パターンスペースはNコマンドなどで複数行になり得る。
  3. ここでスクリプト末尾の段階に達したので、残ったパターンスペースの内容「1行目」が標準出力となる。
  4. そして次のサイクルに移る。
  1. つづいて、入力の2行目がパターンスペースにコピー(上書き)される。
  2. これはアドレスに一致したので、現在のパターンスペースにdコマンドが適用され、削除される。
  3. スクリプト末尾の段階で、パターンスペースに何も残っていないので出力はない。
  4. そして次のサイクルに移る。3行目は1行目と同様。

上記のように、アドレスに関わらず入力行はパターンスペースにコピーされる。アドレスはその後でコマンドが適用されるか否かの条件になる。