paste

表題のコマンドについてメモ。知らなかった使い方だった。

■ 環境

  • Linux
  • Mac OSX El Capitan

■ paste

`paste`コマンドといえば、複数のファイルを行単位で結合するコマンドである。例えば下記のような実行結果となる。

$ cat test1
1
2
3
$ cat test2
a
b
c
$ paste test1 test2
1     a
2     b
3     c
$ cat test3
x
y
z
$ paste test1 test2 test3
1     a     x
2     b     y
3     c     z
$ paste -d , test1 test2 test3
1,a,x
2,b,y
3,c,z
$

今回はこれを応用(?)して、1つのファイルから行列(?)を作成する。元ファイルは下記のようなものである。

$ cat list
063
187
223
236
238
  :
$

これを2列に並べ替えるには下記のように実行する。

$ cat list | paste - -
063     187
223     236
238     239
  :
$

3列に並べ替えるのであれば下記のように実行する。

$ cat list | paste - - -
063     187     223
236     238     239
240     241     242
  :
$

“-“の数で列数を指定できる。CSVのようにするには下記である。

$ cat list | paste -d , - - -
063,187,223
236,238,239
240,241,242
  :
$

使い方によっては便利だ。

以上。