Alterando de linha para coluna com o comando shell script

0

Estou usando a linguagem UNIX para extrair meus arquivos. Eu usei este comando para extraí-lo:

value_1=$(cat tmp.csv | head -1001 | cut -f 3-6 -d','> tmp1.csv)
value_2=$(cat tmp.csv | head -2002 | tail -1001 | cut -f 4-6 -d','> tmp2.csv)
paste -d ',' tmp1.csv tmp2.csv > final.csv

Meu arquivo "tmp.csv" é:

0   0   0   17.92204    -3.017933   35.14229
1   0   1   18.27151    -3.179997   35.20044
2   0   2   18.22776    -3.566021   34.87167
                      .
                      .
0   1   0   20.89817    -2.37854    66.51003
1   1   1   21.48396    -2.461451   66.48988
2   1   2   21.78348    -2.575202   66.51389

Mas o resultado é assim:

0   17.92204    -3.017933   35.14229
    20.89817    -2.37854    66.51003
1   18.27151    -3.179997   35.20044
    21.48396    -2.461451   66.48988
2   18.22776    -3.566021   34.87167
    21.78348    -2.575202   66.51389

Eu quero fazer o resultado assim:

0   17.92204    -3.017933   35.14229    20.89817    -2.37854    66.51003
1   18.27151    -3.179997   35.20044    21.48396    -2.461451   66.48988
2   18.22776    -3.566021   34.87167    21.78348    -2.575202   66.51389

Eu queria saber se seria possível conseguir isso sem manipular manualmente?

    
por ahmad adilah 13.11.2017 / 11:35

2 respostas

0

Se pudermos basear no fato de que a primeira linha tem 4 itens e a segunda 3, podemos fazer isso, por exemplo, usando o awk:

$ cat input-file | awk '{if(NF==4){aa=$0} else {print aa" "$0;}}' > output-file
    
por 13.11.2017 / 11:51
0

Saída anterior que você mencionou na questão Eu acredito que é a saída de final.csv

0   17.92204    -3.017933   35.14229
    20.89817    -2.37854    66.51003
1   18.27151    -3.179997   35.20044
    21.48396    -2.461451   66.48988
2   18.22776    -3.566021   34.87167
    21.78348    -2.575202   66.51389

Use este comando

cat final.csv | sed "N;s/\n/ /g"

Saída

0   17.92204    -3.017933   35.14229     20.89817    -2.37854    66.51003
1   18.27151    -3.179997   35.20044     21.48396    -2.461451   66.48988
2   18.22776    -3.566021   34.87167     21.78348    -2.575202   66.51389
    
por 14.11.2017 / 04:28