私のファイルを抽出するためにUNIX言語を使用しています。このコマンドを使用して抽出します。
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
私の "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
しかし、結果はこうです。
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
私は次のような結果を得たいと思います:
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
手動で行わずにこれを達成できるかどうか疑問に思います。
答え1
最初の行に4つの項目があり、2行目に3つの項目があるという事実に基づいてこれに基づいている場合は、awkを使用して次のようにできます。
$ cat input-file | awk '{if(NF==4){aa=$0} else {print aa" "$0;}}' > output-file
答え2
あなたの質問で言及した以前の出力は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
このコマンドを使用してください
cat final.csv | sed "N;s/\n/ /g"
出力
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