出力を縦に折り返す
左の出力を右の出力にする foo を見つけたいと呟いたら、 Twitter で反応してくれた方が結構いた。
ありがたいです。
$ seq 10 1 2 3 4 5 6 7 8 9 10
$ seq 10 | foo 1 6 2 7 3 8 4 9 5 10
考えてたこと
三角行列みたいなものを作って、列をふたつ引っ張って来ればいけるのでは?
三角行列
こういう三角行列に整形してくれる bar を作れば、その出力に答えが埋まってる。
$ seq 10 | bar 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 3 4 5 6 7 8 9 10 4 5 6 7 8 9 10 5 6 7 8 9 10 6 7 8 9 10 7 8 9 10 8 9 10 9 10 10
いい感じの二列
$ seq 10 | bar | awk '{print $1, $6}' 1 6 2 7 3 8 4 9 5 10 6 7 8 9 10
三角行列はどうしたら得られるのか?
唐突に出てきた三角行列を作るための bar の部分について。
二重ループ
二重ループで美しくないけど実現できるはず。
$ seq 10 | xargs |\ awk '{for(i=1;i<=NF;i++){for(j=i;j<=NF;j++){printf($j" ")}print ""}}'
他の方々のもの
ゆうくん (@takion0) | Twitter
@nogiro_iota| bc | paste -d " " tmp - | head -n$((`gyo tmp`/2))
なんてどうでしょうかねwwww
— ゆうくん (@takion0) 2015, 8月 6
yes $((`gyo tmp`/2)) | head -n`gyo tmp` | paste -d "+" tmp - | bc | paste -d " " tmp - | head -n$((`gyo tmp`/2))
— ゆうくん (@takion0) 2015, 8月 6
Tukubai がないなら、`gyo tmp` -> `cat tmp | wc -l`。
くんすと (@kunst1080) | Twitter
@nogiro_iota
awk一発でかくとこんな感じでしょうかね
jot 8 | xargs | awk '{f=NF/2;for(i=1;i<=f;i++){print $i, $(i+f)}}'
— くんすと@日曜日東S22a (@kunst1080) 2015, 8月 6
ぐれさん (@grethlen) | Twitter
$ seq 4 | xargs -n 2 | tateyoko
— ぐれさん (@grethlen) 2015, 8月 6
Heliac1999 (@Heliac1999) | Twitter
@nogiro_iota awk 版をもう一つ。
seq 19 | awk '{a[NR]=$1}END{(NR%2)?(NR++):0;r=NR/2;for(i=1;i<=r;i++){print a[i] " " a[i+r]}}'
— Heliac1999 (@Heliac1999) 2015, 8月 6
あれ・・・?
@nogiro_iota あ,あの.ものすごく卑劣極まりない方法が見つかって
seq 20 | column -c 20
でどうにかなっちゃいましたことをここに報告します.
— ゆうくん (@takion0) 2015, 8月 6