作者sunev (Veritas)
看板MATLAB
标题Re: [讨论] 欲计算Hessian,应如何建立Cell Array?
时间Fri Oct 23 00:54:25 2015
※ 引述《celestialgod (天)》之铭言:
: → sunev: 就你的情形我猜简单的grep cut tr组合就可以了 10/23 00:25
: 我的东西大概长这样:
: select, varName1, varName2, ..., varName56 from XXX where YYYZZZ....
: go
: ,character, number, number, number, ...
: ....(重复上一行格式大概有287列)
: 接着,再重复上面的那四行大概100~300次(depends) 是一个档案
: 共有400个这样的档案要处理,我不确定要怎样用SH做
: ※ 编辑: celestialgod (180.218.154.163), 10/23/2015 00:32:20
: 推 sunev: 印象中mex是编译时的环境有点龟毛,编译後的档案倒是没这麽 10/23 00:39
: → sunev: 麻烦,只是一样三平台都要分开编译就是了 10/23 00:39
: 推 sunev: 所以你要抓的是 character 後面的number吗? 10/23 00:44
如果是要抓character後面的number
先用grep 抓出含character 的所有行
grep character FILENAME > FILENAME2
再用cut以用-d"," 来指定','为分隔字元,
用-f 3-来抓第3个之後的栏位
cut FILENAME2 -d"," -f 3- > OUTPUTFILE
合起来的话会像这样
grep character FILENAME | cut -d"," -f 3- > OUTFILENAME
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.54.158
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1445532870.A.131.html
1F:→ celestialgod: 如果只是要抓後面的数字会简单很多(叹气 10/23 00:56
2F:→ celestialgod: 而且每次重复的character会不同~~~ 10/23 00:57
3F:→ celestialgod: 每个档案里面有各种character没固定格式 10/23 00:57
那可以在grep时改用 go 当关键字
再用 -B n选项指定抓後n行,
grep go -B 287 FILENAME | cut -d"," -f 3- > OUTFILENAME
※ 编辑: sunev (140.112.54.158), 10/23/2015 01:02:30
4F:→ sunev: 或用grep -v 做invert select,把含go及含select的行去掉 10/23 01:05
5F:→ sunev: 再说 10/23 01:06
6F:→ celestialgod: 恩 可以一试,不过都已经懒了 MATLAB用一用就好 10/23 01:06
7F:→ celestialgod: 我这样做,MATLAB大概一个48M的档案要10~13秒 10/23 01:07
8F:→ celestialgod: sh会快很多吗@@ 10/23 01:07
不确定
但若有办法整理到
matlab只用一行指令就能读进来应该会快不少
顺带一提
若要针对所有 *.log 做处理
可用
for FILE in *.log
do
grep -v 'go\|select' $FILE | cut -d"," -f 3- > $FILE.out
done
※ 编辑: sunev (140.112.54.158), 10/23/2015 01:19:02
9F:→ celestialgod: 後来发现根本不是筛选问题XD 10/23 14:32
10F:→ celestialgod: 是我要怎麽把character跟数字分开的问题QQ 10/23 14:32
11F:→ celestialgod: 还要确定他们没有多一行 10/23 14:32
12F:→ sunev: 不是很清楚你说的意思,可能要给个sample input及你用的 10/26 16:57
13F:→ sunev: matlab code才好分析 10/26 16:58
14F:→ celestialgod: 我放弃用MATLAB处理了XD 10/26 17:07
15F:→ celestialgod: 最後就用其他工具先带过,老师要求什麽在说~"~ 10/26 17:08