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
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?
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
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
Tags text-processing table