3 개의 CSV 파일에 포함 된 데이터를 Gnuplot으로 플롯해야합니다.

일반적으로 , 다음 코드를 사용하여 2 개의 CSV 파일에서 플롯합니다.

$datablock << EOD `cat ../Q1a/sim_Q1.csv <(tail -n+8 ../Q1b/sim_Q1.csv | tr ""," " " | sort -nk19 )| tail -n+8 | tr ""," " " | sort -nk19 > ../Q1a/Q6_ressult.txt` EOD set print "|bash -x" print $datablock set print 

CSV는 세 개의 다른 디렉토리에 있습니다. 데이터는 8 행에서 시작하며 ", 문자를 제거하고 19 열을 기준으로 데이터를 정렬해야합니다.

이 코드를 확장하여 동일한 작업을 수행하는 3 개의 다른 CSV “를 붙여 넣는 방법을 모르겠습니다. sort, tail -n+8tr 명령을 실행하고 결과와 함께 최종 .txt 파일을 가져옵니다.

답변

Gnuplot이 구체적으로 어떻게 작동하는지 잘 모르겠지만 “여러 파일을 tail하는 방법을 찾고 있다면 명령 줄에 이름을 전달하기 만하면됩니다.

유일한 문제는 tail가 사용자가 쉽게 볼 수 있도록 헤더로 출력을 분리한다는 것입니다. -q 옵션 추가 :

 -q, --quiet, --silent never output headers giving file names 

지금까지 프로세스 대체와 다중 (r e) 정렬은 간단합니다.

tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19 

댓글

  • 감사합니다. 귀하의 코드는 간단하고 잘 작동합니다. 두 번째 파일에서 8 행에서 470 행까지 행 범위를 어떻게 선택할 수 있는지 묻고 싶습니다. sed -n -e '8,470p'를 사용할 수 있지만 솔루션을 변경하는 방법을 모릅니다. 문제는 세 파일 중 하나에서만이 범위 선택이 필요하다는 것입니다.
  • @ user1993416 아마도 가장 간단한 수정은 tail -q -n+8 file1 <(head -n 470 file2) file3
  • 일 것입니다.

  • 마지막으로 결과는 5 개 파일과 2 개 파일에 있습니다. 몇 행까지 head -n를 만들어야합니다. tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5와 같이 작성할 수 있습니까?
  • 5 개의 파일을 붙여 넣은 새 질문을 게시했습니다. 감사합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다