包含換行符的文字處理 - Linux

Table of Contents


我想把某 html 的 javascript 都切掉,
用 perl 寫就是 ` $html =~ s#<script(.|\n)*?</script>##g ; `
我想知道有沒有單行的寫法。

`perl -pe` 會變成逐行處理,
而 sed 和 awk 又只有處理單行內的比較方便。
sed 還沒有貪婪模式……。

我用的方法:

$ tr '\n' '\0' < foo.html | perl -pe '...' | tr '\0' '\n'


--
因為她不知道,唯一值得她流淚的人,絕不會讓她流淚。

--

All Comments

Rachel avatarRachel2016-03-04
perl -0777 -p -e 's{<script>(.*?)</script>}{}gs;'
Una avatarUna2016-03-06
javascript這種一般性程式,用regex無法100%正確處理,絕大
多數情況OK,就看會不會遇到例外
Ina avatarIna2016-03-07
樓上是遇到 var endTag = '</script>'; 嗎 XD
Olivia avatarOlivia2016-03-11
碰到樓上那種寫法,regex 應該就爆了吧 XD
Barb Cronin avatarBarb Cronin2016-03-12
除了字串之外,被註解掉的</script>也是例外之一
Steve avatarSteve2016-03-17
應該說是html的結構造成的結果,用XML或DOM處理可能會較容易