내 파일을 추출하기 위해 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개의 항목이 있고 두 번째 행에 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