Tenho que plotar com o Gnuplot os dados contidos em três arquivos CSV.

Normalmente , Uso o seguinte código para plotar a partir de 2 arquivos 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 

Os CSVs estão em três diretórios diferentes. Os dados começam na linha 8 e devo retirar os caracteres " e , e classificar os dados pela coluna 19.

Não sei como estender este código para colar 3 CSV “s diferentes fazendo o mesmo, sort, tail -n+8 e tr comandos e obter um .txt arquivo final com o resultado.

Resposta

Não tenho certeza de como o Gnuplot atua especificamente nisso, mas se você está procurando uma maneira de tail vários arquivos, pode fazer isso simplesmente passando seus nomes na linha de comando.

A única pegadinha é que tail separará as saídas com um cabeçalho para facilitar a visualização humana, a menos que você adicione a opção -q:

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

Até onde posso ver, você pode pular as substituições de processo e múltiplas e) as classificações simplesmente fazem

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

Comentários

  • Obrigado. Seu código é simples e funciona bem. Eu gostaria de perguntar como eu poderia selecionar um intervalo de linhas no segundo arquivo, por exemplo, de 8 a 470 linhas. Eu poderia usar sed -n -e '8,470p', mas não sei como mudar sua solução. Acho que o problema é que preciso dessa seleção de intervalo em apenas um dos três arquivos.
  • @ user1993416 provavelmente a modificação mais simples seria tail -q -n+8 file1 <(head -n 470 file2) file3
  • Finalmente, meus resultados estão em 5 arquivos e 2 deles, tenho que fazer o head -n até alguma linha. Posso escrever algo como tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5?
  • Publiquei uma nova pergunta com a colagem dos 5 arquivos. Atenciosamente.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *