@nullpopopoさんの記事を受けて、自分もやってみました。
シェル芸空行を出力する(別解) | (っ´∀`)っ ゃー | nullpopopo
さて、FreeBSDには rs(1) という、配列を変換するコマンドがあります。例えば、

1
2
3
% jot 10 | rs 2 3
1   2   3
4   5   6

とすれば、上記のように1~10の列を縦2行×横3列にした行列を得ることが出来ます。
また、引数を1つにすると

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

このように、縦2行の行列をいい感じに作成してくれます。
これを応用して…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
% echo 1 | rs 11
1










こうすると、1行目が1で残りが空の、縦11行×横1列の行列が作成されます。
1行目を消しましょう。grepで。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
% echo 1 | rs 11 | grep -v "1"










10行の空行が作成されました。
これを応用して、100行の空行は

1
% echo 1 | rs 101 | grep -v "1"

で作成できます。
さて、ここまでの内容を踏まえ、いくつかのパターンで速度の計測です。

1
2
3
4
5
$ time echo 1 | rs 1000001 | grep -v "1" > /dev/null

real    0m0.072s
user    0m0.024s
sys     0m0.058s
1
2
3
4
5
$ time echo 1 | rs 1000001 | awk 'NR>1' > /dev/null

real    0m0.275s
user    0m0.202s
sys     0m0.089s
1
2
3
4
5
$ time echo 1 | rs 1000000 | tr -d '1' > /dev/null

real    0m0.082s
user    0m0.022s
sys     0m0.071s

行をカットするだけならawkよりgrepの方が速いみたいです。ともあれ、rsとても速いですね!!以上!

参考リンク