簡體   English   中英

使用bash提取數字並轉換為CSV文件

[英]Using bash to extract numbers and convert to CSV file

我是使用bash提取的新手,但我不是尋找我的問題的搜索條件。 我喜歡從一個非常大的日志文件中提取一些變量的數據。

日志文件的示例

temp[min,max]=[   24.0000000000000      ..   834.230000000000      ]
CHANGE working on TEMS
RMS(TEMS)=  6.425061887244621E-002   DIFMAX:   0.896672707535103     
               765                     1                   171
CHANGE working on PHI 
RMS(PHI )=   1.92403467949391        DIFMAX:    62.3113693145351     
               765                     1                   170
CHANGE working on TEMP
RMS(TEMP)=  6.425061887244621E-002   DIFMAX:   0.896672707535103     
               765                     1                   171
PMONI working
TIMSTP working

COPEQE working : INFO
DELT =    630720000.000000      sec       

Courant-Number in x,y,z:
Max. :   5.05    ,      0.00    ,      6.93    
Min. :   0.00    ,      0.00    ,      0.00    
Avg. :  0.568E-02,      0.00    ,     0.383    
PROBLEM: Courant-Number(s) greater than 1 :   11.9802093558263     
max. TEMP-Peclet in X:                     653                     1
               170
max. TEMP-Peclet in Y:                     653                     1
               170
Temperature-Peclet-Number in x,y,z:
Max. :  0.357    ,      0.00    ,     0.313E-01
Min. :   0.00    ,      0.00    ,      0.00    
Avg. :  0.307E-03,      0.00    ,     0.435E-03
Temperature-Neumann-Number in x,y,z:
Max.:   64.9    ,    64.9    ,    64.9    
Min.:  0.619E-02,   0.619E-02,   0.619E-02
Avg.:   35.5    ,    35.5    ,    35.5    
PROBLEM: Temp-Neumann-Number greater than 0.5 :   194.710793368065     
(Dominating: Courant-Number)
DRUCK working
KOPPX working
#########################################################################
STRESS PERIOD:                      1                        1   
                 1  of                    100   <<<<<
Time Step:      50 (  1.0% of 0.315E+13 sec       )(0.631E+09 sec       )
#########################################################################

### Continues on ###

我設法使用bash提取與我正在尋找的變量相關的行。

grep -A 3 'Courant-Number in x,y,z' logfile.log > courant.txt
grep -A 2 'Max.' courant.txt > courant.txt

得到這個......

  Max. :  0.146E+04,      0.00    ,     0.169E+04
  Min. :   0.00    ,      0.00    ,      0.00    
  Avg. :   1.15    ,      0.00    ,     0.986    
--
  Max. :  0.184E+04,      0.00    ,     0.175E+04
  Min. :   0.00    ,      0.00    ,      0.00    
  Avg. :   1.13    ,      0.00    ,      1.05    
--
  Max. :  0.163E+04,      0.00    ,     0.172E+04
  Min. :   0.00    ,      0.00    ,      0.00    
  Avg. :   1.13    ,      0.00    ,      1.17  

我想將此數據轉換為包含以下列的CSV文件,從而總共生成9列。

Max_x | Max_y | Max_z | Min_x | Min_y | Min_z | Avg_x | Avg_y | Avg_z

我想繼續使用bash來獲取這些數據。 任何輸入將是最受歡迎的。

謝謝!

你有個好的開始。 我之前有一個更糟糕的解決方案,但后來我學會了粘貼-d。

grep -A 3 'Courant-Number in x,y,z' logfile.log |
    grep -A 2 'Max.' |
    grep -v -- '--' |
    sed 's/^.*://' |
    paste -d "," - - - |
    sed 's/ *//g'
  • 找到courant號+3行
  • 找到最多+ 2行以下
  • 擺脫有' - '的行
  • 擺脫min:max:avg:
  • 用逗號連接每三行
  • 擺脫空白

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM