sedを使って標準出力を逆順に変換できるらしい
これを
% 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勉強しよう。