鐵之狂傲

 取回密碼
 註冊
搜尋

本文章最後由 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



.......................................................................................

 

回覆 使用道具 檢舉

全世界最先進的跳動筆
2#
無效的樓層,該文章已經被刪除
你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 19-12-7 17:36 , Processed in 1.281320 second(s), 16 queries .

回頂部