![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - 請問正則表示式(regular expression)能做到這樣嗎?
(https://www.pcdvd.com.tw/showthread.php?t=971492)
|
---|
1個附加檔案
擷取正則表達式match到的項目
最簡單的方式是.. Emeditor + Perfecta 巨集 |
再請教大家一個問題<(_ _)>
如果透過linux的(du)把資料夾大小/擋案大小抓出來後,能夠用哪個方式把數字的字串過濾出來 舉例 執行 du -s 'folder name or file name' 結果 292980 folder name or file name 我想把292980撈出來再丟給其他的變數 我應該如何把292980過濾出來? 我試過用grep,只能把數字的部份過濾出來而且正則表示不能設定的項ultraedit那般複雜 其餘還嘗試過expr,但是只能針對特定長度的字串取出,因為我不知道長度,如果能支援正則表式 或許還能抓出來 引用:
請大家指點一條明路 ----------------------- 另外和正則表示無關的一個問題請教一下大家,如果說shell ecript裡面的某個給rar用參數我想依照某個邏輯做內插後丟給shell script的變數,再把那個變數餵給rar用,一般來說大家建議怎麼做 邏輯= 一個excel的table,這個table會有大小對應參數的類似50*2的一個table 每一列就是大小對應參數這樣 根據某資料夾或擋案大小抓到table裡面的某個參數,如果沒有就做內插曲小數點後2位 因為牽涉到linux的指令(du)和運算邏輯(excel)我的想法是把參數echo後用丟給C++(cin)再用二維陣列的方式把table對應的再值取出要不然就做內插(這點還沒有仔細想能不能做到),最後再把結果print出來再丟給shell script的一個變數再讓rar調用這個變數 ex 根據excel的資料寫出一個二維陣列 1000 1.5 2000 2. 3000 3 4000 3.25 input 3200的情況output就是 3+[(3.25-3)/1000]*200 input 3000的情況output就是 3 不知道有沒有人給我點意見,這樣做好嗎?(可行嗎?)還是有其他的建議 老實說我覺得這個問題很麻煩,我光是把字料夾大小dump出來都很研究了很久,又牽涉到C++的陣列恐怕要研究一陣子 = = |
第一個問題,如果要抓指令的制式輸出,可以試試看 awk。此外 grep 的 re 比較陽春,可以用 egrep (or grep -E),當然如果你被我帶壞都用 perl 系的,egrep 還是差了一點點。
第二個問題看不懂你想做啥,先對陣列回答,如果是 C++ 不是偽裝成 C++ 的 C,可以 override operator 做 associative array 或用內建的 map 取代二維陣列,不過如果第一維資料都是純數值那用二維陣列就可以。 |
引用:
du -s 的結果大小固定是第一個欄位,也許可以用 cut -f1 取得,例如 du -s 'folder name or file name' | cut -f1 |
引用:
好像真的可以直接用cut!! 原以為要用到正則表示來取字串會是比較正規的用法,沒想到網路上都找不到相關的用法,難正則表示不是應用這這種情況 :nonono: |
引用:
你把 cut -f1 換成 awk '{print $1}' 試試 XD 應該一樣,現在手邊沒 linux 沒試,懶得開機。 :laugh: :laugh: :laugh: :laugh: :laugh: |
引用:
的確是一樣的:D 下一步換來試試看能否用shell script -> C++ ->shell script 來實現我上面講的邏輯 若還有任何其他建議,請大家不吝指教 :hungry: |
|
原來你第二個問題只是要互傳資料,如果你只是要單純在程式與 shell script 中互傳資料,那用 pipe line 就可以輕鬆達到了。
還是推薦 awk 好好玩一下,這是好物,cut, tr 這些很少用,因為一個 awk 就幾乎可以搞定。 |
安裝visual studio 2010中,linux下應該要用g++來compiler吧,我也不會用,之後再爬文看看怎麼弄
暗天使兄說得我大部分都半知半解,需要來研究一下XD 上面我說的隨隨便便的,我再說的詳細一點,我的目的其實是做無人職守分卷壓縮,以前已經有成功"改"了一個半手動的陽春型的腳本湊合著用,但是因為還有一些步驟要手動所以沒加入par2而且有點麻煩,所以不是很滿意這個腳本 而且這次還希望是把par2加入(上面打錯了,主要不是針對rar是par2,而par2的參數要用檔案大小來計算,而我有我自己的一套邏輯來計算所以才有上面的問題)腳本 所以說加入par2和全自動分卷壓縮是我這次修改腳本的目標 http://pastebin.com/0QHPSbb5 所以說基本上是調用一個shell script腳本,以下是腳本大體的流程 1.先針對腳本指定的路徑找到所屬的資料夾找到其下的檔案(N個) 2.針對外部文件中1對1 mapping在rar分卷壓縮的時候命名 3.分卷完之後把所有附檔名改寫 2-3之中因為這次希望另外插入par2的指令來製作修復檔,而修復檔需要以上說的excel參考資料來計算所以要取出該資料夾檔案大小丟到C++上面玩陣列等OOXX(暫訂)在打算完的參數print出來給shell script的par2使用,所以我上面才會說shell script -> C++-> shell script 而3對應到的是77-134行,因為當時懶的寫要怎麼精確計算所以暫訂分卷有150,這個實在是太醜了,我打算用個for迴圈來儘量精化這個流程,還沒具體概念 ps:現在REX我幾乎都是挑perl來用了(但也不是很常用),如果pattern邏輯有問題再說 :D |
所有的時間均為GMT +8。 現在的時間是01:46 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。