- 鐵幣
- 234 元
- 文章
- 16 篇
- 聲望
- 0 枚
- 上次登入
- 14-9-2
- 精華
- 0
- 註冊時間
- 12-9-3
- UID
- 624168
|
本文章最後由 wang_966 於 12-9-6 20:51 編輯
如何利用 仿unix命令 sed 一次替換文字中的 "某些相似性的字串"
* 在 unix/linux 大多數複雜的批次處理都可以不用設計程式來達成
* 如果在 unux/linux 可以用 sed 命令來編輯大量的文字檔
* 如果在 windows 下可下載 "仿unix命令", 其中也有 sed.exe 可用
windows下安裝 UnxUtils -- 仿 unix/linux 命令
.......................................................................................
* 範例1:假設有一個檔案 c:\input.txt 內容如下:
<a href=http://hgdyv.bay.livefilestore.com/mdfkjfbvfjgnkkk485tu89-gnfsji83-gjde_/1.jpg>
<a href="http://hgdyv.bay.livefilestore.com/123gnkkk485tu89-gnfsji83-gjde_/52.jpG">
<a href="http://www.abcdef.com/d3nj6-_R/903.JPg">
要將存放的網址全部替換, 最後產生 c:\output.txt 內容如下:
<a href="http://www.name.com.tw/1.JPG">
<a href="http://www.name.com.tw/52.JPG">
<a href="http://www.name.com.tw/903.JPG">
則利用以下命令便可編輯出所要的結果:
sed.exe -e "s/http.*\/\([0-9][0-9]*\)\.[jJ][pP][gG]/http:\/\/www.name.com.tw\/\1.JPG/" < c:\input.txt > c:\output.txt
執行完便產生 c:\output.txt 內容為:
<a href=http://www.name.com.tw/1.JPG>
<a href="http://www.name.com.tw/52.JPG">
<a href="http://www.name.com.tw/903.JPG">
* 註解:
sed.exe -e "編輯指令" < 輸入檔 > 輸出檔
編輯指令中有 "s/找字串一/改成字串二/" , 其中 s 表示 "替代"
找字串一 http.*\/\([0-9][0-9]*\)\.[jJ][pP][gG] , 其中
. 表示 "任意字", * 表示 "前面的字出現任意次數", 因此
.* 表示 "任意字出現任意次數"
\ 表示 將其後的字的意義 "取消 或 另做不同的解釋" , \/ 表示 / ,
\([0-9][0-9]*\) 表示將 \( \) 的內容存到字串二的 \1 中 ,
[0-9] 表示一個字為範圍介於0-9之間的數字,
[0-9]* 表示數字重複出現任意次(含零次) ,
\. 表示一個字 '.'
[jJ] 表示一個字內容為 j 或 J
.......................................................................................
|
|