PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
goddesschi
*停權中*
 

加入日期: Mar 2007
文章: 186
請問正則表示式(regular expression)能做到這樣嗎?

0x00 0x00 0x08 0x00 0x02 0x00 0x04 0x00 0x02 0xFF 0x00 0xFF 0x02 0x07 0x88 0x02 0x09

希望每隔3個0x字串就換行,也就是以下這樣
請問正則表示可以做得到嗎?或者是有沒有其他方法能夠達到這個目的

0x00 0x00 0x08
0x00 0x02 0x00
0x04 0x00 0x02
0xFF 0x00 0xFF
0x02 0x07 0x88
0x02 0x09
     
      
舊 2012-06-06, 11:26 AM #1
回應時引用此文章
goddesschi離線中  
tbsky
Junior Member
 

加入日期: Jan 2002
文章: 864
硬要用的話可以像這樣
perl -e 'print join("\n","0x00 0x00 0x08 0x00 0x02 0x00 0x04 0x00 0x02 0xFF 0x00 0xFF 0x02 0x07 0x88 0x02 0x09" =~ /(0x\S+\s+0x\S+\s+0x\S+\s+|.+$)/g)';
 

此文章於 2012-06-06 01:38 PM 被 tbsky 編輯.
舊 2012-06-06, 01:35 PM #2
回應時引用此文章
tbsky離線中  
goddesschi
*停權中*
 

加入日期: Mar 2007
文章: 186
引用:
作者tbsky
硬要用的話可以像這樣
perl -e 'print join("\n","0x00 0x00 0x08 0x00 0x02 0x00 0x04 0x00 0x02 0xFF 0x00 0xFF 0x02 0x07 0x88 0x02 0x09" =~ /(0x\S+\s+0x\S+\s+0x\S+\s+|.+$)/g)';


請問這個要怎麼用啊,ulteredit可以嗎?還是說用其他工具?
之所以上來請教大家是因為我手邊有幾千的0x字串,要我手動每三個字串按一次enter會要我的命的
舊 2012-06-06, 02:14 PM #3
回應時引用此文章
goddesschi離線中  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
ultraedit 試試:

match case 取消
regular expression engine 選 perl

search:
(0x[0-9a-f]{2} 0x[0-9a-f]{2} 0x[0-9a-f]{2} )

replace:
\1\n
__________________
滿招損 謙受益
舊 2012-06-06, 02:56 PM #4
回應時引用此文章
darkangel離線中  
sazabijiang
*停權中*
 

加入日期: Sep 2004
您的住址: 台北
文章: 8
引用:
作者goddesschi
0x00 0x00 0x08 0x00 0x02 0x00 0x04 0x00 0x02 0xFF 0x00 0xFF 0x02 0x07 0x88 0x02 0x09

希望每隔3個0x字串就換行,也就是以下這樣
請問正則表示可以做得到嗎?或者是有沒有其他方法能夠達到這個目的

0x00 0x00 0x08
0x00 0x02 0x00
0x04 0x00 0x02
0xFF 0x00 0xFF
0x02 0x07 0x88
0x02 0x09


若我來做的話,
在命令列模式下寫WSH (windows script host)
或者用ExcelVBA
逐個位元讀取檔案, 每隔固定長度就添加 0d0a換行字元
輸出到另一個檔案, 結束.
舊 2012-06-06, 05:59 PM #5
回應時引用此文章
sazabijiang離線中  
erai
Basic Member
 

加入日期: Jan 2006
文章: 22
樓主應該是要編輯檔案,要做重覆性的動作


1. 安裝PSPad(免費軟體)

2. 錄製動作巨集

3. 連續執行巨集
__________________
開發中的落後地區
舊 2012-06-06, 06:13 PM #6
回應時引用此文章
erai離線中  
goddesschi
*停權中*
 

加入日期: Mar 2007
文章: 186
引用:
作者darkangel
ultraedit 試試:

match case 取消
regular expression engine 選 perl

search:
(0x[0-9a-f]{2} 0x[0-9a-f]{2} 0x[0-9a-f]{2} )

replace:
\1\n


黑天使大哥,謝謝,這個可以

引用:
作者sazabijiang
若我來做的話,
在命令列模式下寫WSH (windows script host)
或者用ExcelVBA
逐個位元讀取檔案, 每隔固定長度就添加 0d0a換行字元
輸出到另一個檔案, 結束.


引用:
作者erai
樓主應該是要編輯檔案,要做重覆性的動作


1. 安裝PSPad(免費軟體)

2. 錄製動作巨集

3. 連續執行巨集


兩位大哥,謝謝你們分享經驗,我明天搞定客戶後會來研究一下
我目前抓不到頭緒
舊 2012-06-06, 09:03 PM #7
回應時引用此文章
goddesschi離線中  
Tetralet
Regular Member
 

加入日期: Apr 2002
文章: 93
echo '0x00 0x00 0x08 0x00 0x02 0x00 0x04 0x00 0x02 0xFF 0x00 0xFF 0x02 0x07 0x88 0x02 0x09' | sed -e 's/0x\(..\) 0x\(..\) 0x\(..\) /0x\1 0x\2 0x\3 \n/g'

Linux 是你的好朋友... (茶)
__________________
我有沒有看錯?有一顆星星了耶∼∼
路人:沒錯,這一切全是你自己的幻覺 ....

偶爾打打****:今天的 Tetralet 又在唧唧喳喳了
舊 2012-06-06, 09:30 PM #8
回應時引用此文章
Tetralet離線中  
oversky
*停權中*
 

加入日期: Jan 2002
文章: 127
用 vim 的話,在 normal mode
:set fo+=a
:set tw=14
{v}gq
舊 2012-06-06, 09:34 PM #9
回應時引用此文章
oversky離線中  
goddesschi
*停權中*
 

加入日期: Mar 2007
文章: 186
再請教另兩個問題

問題一:


若是如圖先用ultraedit先行框選一個直行的範圍後
是否能利用regular express
把該框選範圍的所有第一個3取代為0x3

for example
;Lens correction
0x02,33e0 f3
0x02,33e6 f5
0x02,33e7 f4
0x02,33e8 f0
0x02,33e9 f6
0x02,33ea f2
0x02,33eb f7
0x02,33ec f2
0x02,33ed f4
0x02,33ee f0
0x02,33ef f6
0x02,33e0 f6
0x02,33e1 f7
0x02,33e2 f2
0x02,33e3 f4
0x02,33e4 f0
0x02,33e5 f6
0x02,33e6 f8
0x02,33e7 f7
0x02,33e8 f2

------->

;Lens correction
0x02,0x33e0 f3
0x02,0x33e6 f5
0x02,0x33e7 f4
0x02,0x33e8 f0
0x02,0x33e9 f6
0x02,0x33ea f2
0x02,0x33eb f7
0x02,0x33ec f2
0x02,0x33ed f4
0x02,0x33ee f0
0x02,0x33ef f6
0x02,0x33e0 f6
0x02,0x33e1 f7
0x02,0x33e2 f2
0x02,0x33e3 f4
0x02,0x33e4 f0
0x02,0x33e5 f6
0x02,0x33e6 f8
0x02,0x33e7 f7
0x02,0x33e8 f2

問題二:
可否將每列的尾端最後一個半形數字文字或英文之後插入逗號
(若是尾端是空格會是tab或是全形字串等等則忽略,再往前比對)
(1122334455(空格)(空格)(tab)(tab)---->1122334455,(空格)(空格)(tab)(tab))

for example
0x02,0x33e4 f0
0x02,0x33e5 f6
0x02,0x33e6 f8
0x02,0x33e7 f7

----------->
0x02,0x33e4 f0,
0x02,0x33e5 f6,
0x02,0x33e6 f8,
0x02,0x33e7 f7,
0x02,0x33e8 f2,

此文章於 2012-08-24 04:17 PM 被 goddesschi 編輯.
舊 2012-08-24, 04:11 PM #10
回應時引用此文章
goddesschi離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是03:45 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。