查找*.htm的特定一段文字 並取代 [論壇 - 新手村]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



查找*.htm的特定一段文字 並取代
會員一級
註冊日期:
10/3 17:13:57
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 0
MP : 0 / 0
EXP: 2
離線
我要搜尋這個字串,且希望找到符合的時候在<p>前面加<br>
<p>
<input type="submit" value="Save">
取代成
<br>
<p>
<input type="submit" value="Save">
但恐怕有一個問題,需要濾掉已經有加過<br>的,要不然會重複出現

另還有這種
<table>(有字)
<table>(有字)
</table>(有字)
</table>
取代成
<table>(有字)
<br>
<table>(有字)
</table>(有字)
</table>

因為一個資料夾下有很多個子資料夾,想要將內部所有有關.htm的檔案全部取代。
有甚麼辦法可以批次做?

10/18 10:50:37
應用擴展 工具箱
回覆: 查找*.htm的特定一段文字 並取代
會員三級
註冊日期:
2009/1/10 10:33
所屬群組:
已註冊使用者
等級: 13
HP : 0 / 317
MP : 71 / 9143
EXP: 68
離線
請問你有寫程式來解決這個問題的認知與決心嗎?
請參考 正規表示式(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE)

https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

Perl 程式語言最常用來解決這個問題
但是其他程式語言也有函式庫支援 Regular Expression
你熟哪一種語言就用那種。
我們這些LKK玩電腦的碰到這種問題,會高聲嘆:練功時間到了!

10/20 9:53:25
應用擴展 工具箱
回覆: 查找*.htm的特定一段文字 並取代
會員二級
註冊日期:
2016/2/24 19:05
所屬群組:
已註冊使用者
等級: 5
HP : 0 / 112
MP : 15 / 904
EXP: 51
離線
HTML 有分析器可以用……的樣子

10/20 14:34:29
應用擴展 工具箱
回覆: 查找*.htm的特定一段文字 並取代
會員二級
註冊日期:
2011/10/7 0:22
所屬群組:
已註冊使用者
等級: 7
HP : 0 / 152
MP : 22 / 3170
EXP: 8
離線
推薦參考:
阿旺的Linux開竅手冊 sed和awk
依照上面的內容,可以大致寫成一個sed腳本檔案,比如說re.sed:


/<br>/{   #讓有<br>的下一行不處理直接跳到末尾印出。
    p     #印出在pattern space的<br>
    n     #讀取下一行(被讀入的下一行,在這一輪程序完成後,就不會再被讀入了。)
    b End #跳到有:End標籤的地方。
}
/<p>/{            #如果有遇到<p> 
    h             #就把它存入hold space
    :Again
    n             #pattern space讀入下一行進行下一個判斷。
    /<p>/{
        x         #如果pattern space裡還是<p>就把存在hold space的上一行互換。
        p         #印出上一行。
        b Again   #跳到:Again的標籤進行輪迴。
    }
    /<input type="submit" value="Save">/ i <br> 
                  #如果遇到吻合的狀況,就插入內容。
    H             #把現在pattern space的內容添加到hold space,彼此之間會用newline以就是\n分隔。
    x             #把hold space的內容換回pattern space。
}
:End
p



然後,可以用下面的方式看處理的結果:

sed -n -f re.sed 要處理的檔案.html


如果覺得輸出沒問題,再添加-i參數套用結果:

sed -i -n -f re.sed 要處理的檔案.html

10/20 18:52:52
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.