先頭 n 行と末尾 n 行を出力するワンライナー
先頭 n 行を見たいときには head を使う。末尾 n 行を見たいときには tail を使う。先頭 n 行と末尾 n 行を見たいときがある。head が「後略」で tail が「前略」だとすると、結果の「中略」を見たいときなんかに使う。次のようにしてみた。
[takeyuki@sunya ~]$ cat /usr/share/dict/words | awk -v n=3 'NR<=n{a[NR]=$0}{for(i=n;i>1;i--){z[i]=z[i-1]}z[1]=$0}END{for(i=1;i<=n;i++)print a[i];print "...";for(i=n;i>0;i--)print z[i]}' 1080 10-point 10th ... Zz zZt ZZZ
なぜ欲しかったかというと、anarchy golf - Fibonacci Numbersをやっていて、まんなかあたりはともかく、先頭と末尾があっているか確認したかったから。こんな風に。
[takeyuki@sunya 0019_FibonacciNumber]$ perl -e '$_="1\n1\n";while($z++<44){/(\d*)\n(\d+)\n$/;$_.=($1+$2)."\n"};print;' | awk -v n=3 'NR<=n{a[NR]=$0}{for(i=n;i>1;i--){z[i]=z[i-1]}z[1]=$0}END{for(i=1;i<=n;i++)print a[i];print "...";for(i=n;i>0;i--)print z[i]}' 1 1 2 ... 701408733 1134903170 1836311903