使用bash提取数字并转换为CSV文件
我对使用bash进行提取非常陌生,但我不知道用什么搜索词来查找我的问题。我喜欢从一个非常大的日志文件中提取一些变量的数据 日志文件示例使用bash提取数字并转换为CSV文件,bash,csv,unix,Bash,Csv,Unix,我对使用bash进行提取非常陌生,但我不知道用什么搜索词来查找我的问题。我喜欢从一个非常大的日志文件中提取一些变量的数据 日志文件示例 temp[min,max]=[ 24.0000000000000 .. 834.230000000000 ] CHANGE working on TEMS RMS(TEMS)= 6.425061887244621E-002 DIFMAX: 0.896672707535103 765
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 ###
要得到这个
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|ux|Max|uy|Max|uz|Min|ux|Min|uy|Min|uz|Avg|ux|Avg|y|Avg|z
我想继续使用bash来获取这些数据。任何意见都将不胜感激
谢谢 你有一个好的开始。我之前有一个更糟糕的解决方案,但后来我了解了paste-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行
- 在下面的行中查找max+2
- 去掉带有'--'的行
- 去掉最小值:最大值:平均值:
- 每三行用逗号连接
- 去掉空格
grep -A 3 'Courant-Number in x,y,z' logfile.log |
grep -A 2 'Max.' |
grep -v -- '--' |
sed 's/^.*://' |
paste -d "," - - - |
sed 's/ *//g'