最近沒有意外應該都會在 Linux 下工作,sed 是一個很常用的工具,常用來取代檔案的字串用。
sed 和 grep 一樣,有分 BRE 和 ERE 兩種模式,-E 則代表使用 ERE。
昨天看到一篇文章,剛好有個範例可以練習,沒想到一直試不成功。
下午在寫完簡報後,突然福至心靈的解決了,順便記錄一下。
有一個檔案內容如下:
<html><head><title>Hello World</title>
<body>Welcome to the world of regexp!</body></html>
想要使用 sed 取出非 HTML tag 的內容。
原本是使用 BRE 無法成功
sed -n 's/<.*>\([a-zA-Z !]+\)<\/.*>/\1/p' fileName
改使用 ERE 即可
sed -En 's/<.*>([a-zA-Z !]+)<\/.*>/\1/p' fileName
Note: 上面的 Rex 似乎要把整行都明確表示出來,否則達不到我們要的效果
沒有留言:
張貼留言