看板 MATLAB 關於我們 聯絡資訊
※ 引述《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://www.ptt.cc/bbs/MATLAB/M.1445532870.A.131.html
celestialgod: 如果只是要抓後面的數字會簡單很多(嘆氣 10/23 00:56
celestialgod: 而且每次重複的character會不同~~~ 10/23 00:57
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
sunev: 或用grep -v 做invert select,把含go及含select的行去掉 10/23 01:05
sunev: 再說 10/23 01:06
celestialgod: 恩 可以一試,不過都已經懶了 MATLAB用一用就好 10/23 01:06
celestialgod: 我這樣做,MATLAB大概一個48M的檔案要10~13秒 10/23 01:07
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
celestialgod: 後來發現根本不是篩選問題XD 10/23 14:32
celestialgod: 是我要怎麼把character跟數字分開的問題QQ 10/23 14:32
celestialgod: 還要確定他們沒有多一行 10/23 14:32
sunev: 不是很清楚你說的意思,可能要給個sample input及你用的 10/26 16:57
sunev: matlab code才好分析 10/26 16:58
celestialgod: 我放棄用MATLAB處理了XD 10/26 17:07
celestialgod: 最後就用其他工具先帶過,老師要求什麼在說~"~ 10/26 17:08