これを

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
% jot 10
1
2
3
4
5
6
7
8
9
10

こうして、こうじゃ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
% jot 10 | sed -n -e '1!G;h;$p'
10
9
8
7
6
5
4
3
2
1

さて、各オプションを読み解いていきます。

「-n」オプション

デフォルトではパターンスペースが毎行自動的に出力されますが、このオプションはそれを抑制します。
pコマンドで明示的に出力しない限り、出力されないようになります。

「-e '1!G;h;$p'」オプション

「-e」オプションで、sedスクリプトを記述しています。このsedスクリプトはセミコロン区切りです。ここに現れるコマンドの意味は、以下のとおりです。

>
    h パターンスペースの内容をホールドスペースにコピーします.

G ホールドスペースの内容をパターンスペースの末尾に追加します. p パターンスペースの内容を出力します.

また、「1!」は「1行目以外」、「$」は「最終行」の意味です。つまり、

  • 1行目では「h」コマンドが
  • 2行目以降は「G」コマンドと「h」コマンドが
  • 最終行では「G」コマンドと「h」コマンドと「p」コマンドが
実行されます。コマンドを日本語に展開すると
  • 1行目は、パターンスペース > ホールドスペース
  • 2行目以降は、ホールドスペース >> パターンスペース、パターンスペース > ホールドスペース
  • 最終行は、ホールドスペース >> パターンスペース、パターンスペース > ホールドスペース、パターンスペースを出力
という流れになります。つまり、「ホールドスペース(退避エリア)の内容をパターンスペースの後ろに追記し、再度ホールドスペースへ退避する」ということをして、後ろへ後ろへ値を追記していっているということのようです。
sed勉強しよう。

参考URL