[問題] 請教 sed 下法
我目前正在處理 markdown link,
需要將 "[test](test)" 轉成 "[test](test.html)",
目前的寫法是:
sed 's/\[\([^][\\]\+\)\](\([^][\\]\+\))/[\1](\2.html)/g'
# [ group 1 ]( group 2 )
但如果連結的對象不是 local 路徑,就不做取代,
所以 "[google](http://google.com/)" 將會保持不變。
請問有沒有什麼好的作法?謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.7.189
→
03/18 17:46, , 1F
03/18 17:46, 1F
謝了,不過我希望是更嚴謹的作法,因為冒號其實也可以作為檔名。
可以的話最好是能正確判斷 http, ftp, mailto, ... 等等。
※ 編輯: tkcn 來自: 114.34.7.189 (03/18 17:58)
→
03/18 18:30, , 2F
03/18 18:30, 2F
→
03/18 19:25, , 3F
03/18 19:25, 3F
後來發現有這種寫法 /pattern/!s/... ,
不過,也只能應用在各行獨立的情況下,如果同一行同時有兩種連結,就無能為力了。
※ 編輯: tkcn 來自: 114.34.7.189 (03/18 19:39)
想了很久,實在是找不到方法了,
最後的 workaround 是無論如何先加上 .html,
之後再判斷一次,如果是 http://..../.html 再把 .html 拿掉。
※ 編輯: tkcn 來自: 114.34.7.189 (03/18 22:36)
Linux 近期熱門文章
PTT數位生活區 即時熱門文章