0

名前の付いた複数のcsvファイルがあります

   VAR1_VAR2_VAR3_VAR4.csv

すべてのファイルは、値の変更だけで同じ構造を持っています。毎回 1 つ以上の VAR を修正して、これらのファイルからデータを取得しようとしています。スクリプトを作成しようとしましたが、2 つの問題があります。

1-すべてのファイルが同じ構造を持っているため、すべてのフィールドを正確に知っているため、行と列の番号 (つまり、$(R1,C4)) に従ってデータを取得したいと考えています。これを行うことはできませんか?

2- VAR1 に 3 つのエントリがあるときに 1 つの変数 (つまり、 *_VAR2_VAR3_VAR4.csv ) を修正すると、ループ内でこの変数を反復する方法は?

私のスクリプトはここにあります(私の最初の仮)

  #!/bin/bash          
  #OLDFIS=$IFS
  #IFS=","
  awk -F "," '
  #-------------------------- Table 1  ----------------------- -------#
  BEGIN {

  print"=========================================================="

  printf"%-8s %-8s %-8s %-8s %-8s\n","Network size", "P_Energy", "E_Energy",      
 "All_energy","Latency"

  print"=========================================================="
  }



 {printf  "%-8d %-8d %-8d %-8d %-8d\n",$VAR1, $(R3,C3) ,$(R4,C4) ,$(R5,C5),$(R6,C6)   
  ,$(R7,C7)}' /home/jhon/Desktop/Simulator/results/*_VAR2_VAR3_VAR4.csv 

  #-----------------------------------------------------------------------------#

この例では、出力の最初の列になる VAR1 を修正したいと考えています。他のファイルは、ファイル内の座標を知っています。

編集1:

最初の質問では、コードを次のように変更します: NR==3 {printf "%-20s", $1 } NR==25 {printf "%-20s", $2 } NR==12 {printf "%-20s", $2 }
NR==29 {printf "%-20s", $2 } NR==49 {printf "%-20s", $4 }' /...PATH/simStats_P- Mesh__random_16384_1E-4_16.csv >test.txt を取得します望ましい出力:

 ===================================================================================
Network size       P_Energy           E_Energy           All_energy         Latency             
=====================================================================================
                0.0402597           0.00767312          0.0479328           0.294311 

編集 2: FN の代わりに FNR を使用してすべての値を取得するようになりました

最初の行には、偽の値を入力します。名前に従ってファイルを解析するループを追加する方法はありますか?

4

1 に答える 1

0

awk で分割を使用し、最初の列に表示するパラメーターの番号を手動で入力しました。

 awk -F "," '
 FNR==1 {nb_param=split(FILENAME,param,"[_.]"); printf "%5s", param[7] }  
 FNR==25 {printf "%20s", $2 } 
 FNR==12 {printf "%20s", $2 } 
 FNR==29 {printf "%20s", $2 } 
 FNR==49 {printf "%20s\n\n", $4 }' *.csv
于 2013-10-10T06:38:05.893 に答える