作者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/m.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