ikautak.log

C/C++, Python, CUDA, Android, Linux kernel, Network, etc.

標準入力をsplitしてpasteするpythonスクリプト

標準入力を指定行数でsplitして、その結果をpaste、 というのを一度にやりたかったけど良い方法がわからなかったのでpythonで自作した。

例えば以下のような9行を3行でsplitして、

f:id:trisection:20160628232037p:plain

このようにpasteする。

f:id:trisection:20160628232041p:plain

#!/usr/bin/env python

import sys

def split_paste(n):
    d = [[] for _ in range(n)]

    for i, l in enumerate(iter(sys.stdin.readline, '')):
        d[i % n].append(l.rstrip())

    for l in d:
        print('\t'.join(l))


if __name__ == '__main__':
    if len(sys.argv) > 1:
        split_paste(int(sys.argv[1]))

デリミタはとりあえずtab固定。

seq 12 を4行ごとにsplit-pasteした結果

$ seq 12 | ./split-paste.py 4
1   5   9
2   6   10
3   7   11
4   8   12