これを

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
% jot 10
1
2
3
4
5
6
7
8
9
10
```こうして、こうじゃ

% 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勉強しよう。