一些自己处理数据的脚本
2015-04-03 20:17
197 查看
写给自己的总结(对大家没有帮助)
1. kaldi实验,获得exp下所有实验训练时迭代l的所有log文件的帧准确率等,并且记录实验的名字等,成为所需的格式。
#!/bin/bash exp=mfcc_exp_mono/exp first=lstm_s12 first="d3cec1024r800tg0sp0_5_1lr0.001hf0.3" for x in $exp/*${first}* ; do if [ -d $x ] ;then echo dir: $x for decode in $x/log/iter*.log ; do if [ -f $decode ] ;then echo file: $decode avgloss=$(cat $decode | grep "AvgLoss:" | tail -n 1 | awk '{ print $4; }') frame_acc=$(cat $decode | grep "FRAME_ACCURACY" | tail -n 1 | awk '{ print $3; }') echo "AvgLoss: "$avgloss echo "FRAME_ACCURACY: "$frame_acc echo fi done echo fi done
2.将上面处理过的文件,转成能够直接使用jqplot的格式(最后只需要复制过去就行)
起初代码想了很久,能处理多个文件,内容设计中文的支持,DIR的使用,文件的读写(有很多小技巧,当时是过年在家写的)。 后来改为只处理一个文件,简洁,同时临时定义了一个函数,大大简化了程序# -*- coding:utf-8 -*- #ARGV其实是可以接受命令行变量的,但是必须要这样 ruby -w xxx.rb ... -w 可以不加 #__FILE__ 中文目录下,这个根本不行 #filename=File.expand_path(filename,__FILE__) #filename="../experiments/*.txt" #Dir[filename].each do |fname| #exepath.force_encoding("UTF-8") filenames=["a.txt"] #多个文件就放在数组里面 resultfile="my_result.txt" rsfile_=File.open(resultfile,"w+") cnt=10 #div id的起始 filenames.each do |fname| #puts file 文件名 # 带有block后打开就不用关闭了 rsfile_.puts "------"+fname File.open(fname.force_encoding("UTF-8"),"r") do |file| cont_dir="" cont_FRAME_ACCURACY=[[],[]] tr_cv=0 #想了很久终于解决了我想解决的问题,就是连变量都可以共享 一般的def是不行的 define_method :puts_to_file_code do if cont_FRAME_ACCURACY[0].length!=0 rsfile_.puts "---"+cont_dir #把目录名输入 #-----------专门针对jqplot的--------------# cnt+=1 rsfile_.puts "<div id=\"chart#{cnt}\" class=\"lx_chart\" ></div>" rsfile_.puts "<script>" rsfile_.puts "drawchart(\"chart#{cnt}\",[" tmpdata=" [" cont_FRAME_ACCURACY[0].each {|frame| tmpdata+=frame+"," } tmpdata+="]," rsfile_.puts tmpdata tmpdata=" [" cont_FRAME_ACCURACY[1].each {|frame| tmpdata+=frame+"," } tmpdata+="]," rsfile_.puts tmpdata rsfile_.puts "],[" rsfile_.puts " {label:'tr:#{cont_dir}'}," rsfile_.puts " {label:'cv:#{cont_dir}'}," rsfile_.puts "])" rsfile_.puts "</script>" rsfile_.puts end end while line=file.gets next if line.strip=="" #去除回车后 #puts line #puts line=~/dir/ if line=~/^dir:.*\/(.*)$/ puts_to_file_code cont_dir=$1 cont_FRAME_ACCURACY=[[],[]] elsif line=~/^file:.*initial\.log/ tr_cv=100 elsif line=~/^file:.*tr\./ tr_cv=0 elsif line=~/^file:.*cv\./ tr_cv=1 elsif line=~/^FRAME_ACCURACY:\s*(\d+\.?\d*)%$/ next if tr_cv>2 #puts $1 cont_FRAME_ACCURACY[tr_cv].push $1 end end puts_to_file_code end end rsfile_.close
3. 处理wer得到自己关注的内容
这里用到 文件读写,字符串分割,及接受程序传参等argv=ARGV fin,fout="in.txt","out.txt" if argv.length==2 fin,fout=argv[0],argv[1] elsif argv.length==1 fin=argv[0] end #p fin,fout fpin,fpout=File.open(fin,"r"),File.open(fout,"w+"); while line=fpin.gets sz=line.split /\|/ fpout.print sz[0],sz[-1] fpout.puts end fpin.close fpout.close
相关文章推荐
- 一年没有更新自己的BLOG了,主要是记录一些从sqlserver导数据到oracle的解决方法
- 强迫自己养成习惯用 python 写一些小脚本
- 自己整理的关于C的一些字符串处理函数
- 处理一些简单的客户端脚本(2)
- 处理一些简单的客户端脚本
- 自己写的能处理多类型数据的双向链表
- 让PHP执行一些自己输入的脚本
- spring对一些常见数据类型的配置处理
- EDM的一些常见处理数据操作
- sql.server一些处理数据语句
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- 处理Clob数据(转)关于oracle中大对象处理的一些方法和实例
- C#中日期格式数据的一些处理方法(转)
- 关于Nokia手机数据传输部分的一些进展(转自自己的主页)
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- 强迫自己养成习惯用 python 写一些小脚本
- 网站无法连接sql sever数据库的一些问题处理,解决自己定义的数据库用户名,无法关联数据库和无法登陆数据库
- Web项目开发中对脚本和样式需求处理的一些想法
- 自己实现的一些字符串处理的函数
- lucene 处理大规模数据的一些解决方法 katta--简介