55005


test.csv というファイルがあり任意の列数のデータへ加工をしたいです。

[code]

    $cat test.csv
    a
    b
    c
    d
    
[/code]

例として2列に変形した場合、下記のような書式へ変形をしたいです。

[code]

    a b
    c d
    
[/code]

その際どのようなシェルコマンドを利用することで実現ができるでしょうか


CC BY-SA 4.0
2019-05-16T05:30:56.657
55004
2019-08-29T01:02:57.160
2019-08-29T01:02:57.160
3060
7978
question
shellscript shell
シェルコマンドで行数と列数の変形


私なら`awk`を使います。`if(NR % 2)`の数字を変えれば任意の列数で改行されます。

[code]

    $ awk '{ if(NR % 2) { printf "%s ", $1 } else { printf "%s\n", $1 } }' test.csv
    
[/code]


CC BY-SA 4.0
2019-05-16T05:46:04.953
55005
2019-05-16T05:46:04.953
3060
55004
answer


sed での別解を書いておきます。

[code]

    sed 'N; s/\n/ /' test.csv
    
[/code]


CC BY-SA 4.0
2019-05-16T05:51:48.047
55006
2019-05-16T05:51:48.047
754
55004
answer


僕も通常であれば `xargs` を利用しますが、別解で上げておきます。

[code]

    $ cat test.csv| column -c 16                                                                                      
    a       c
    b       d
    
[/code]

2カラム表示に加えて整形してくれます。


CC BY-SA 4.0
2019-06-04T23:16:59.470
55527
2019-06-05T00:49:20.980
2019-06-05T00:49:20.980
34583
55004
answer


`cat test.csv | paste - -`  
や  
`printf "%s %s\n" $(cat test.csv)`  
はいかがでしょうか？


CC BY-SA 4.0
2019-08-28T23:47:35.637
57666
2019-08-28T23:47:35.637
35558
55004
answer