
我想 sed 這個文件,但是 sed 中的 BRE 沒有像我希望的那樣工作。
我現在所擁有的基本上只是:
$ cat Dungeon | grep -P -o '<\/.*?>'
我的問題是我該如何 sed 這個?我想刪除我已經設法 grep 的部分。也歡迎其他選擇;不過如果可能的話我也想知道如何解決這個問題。
(是的,我在 HTML 上使用正規表示式)
答案1
使用“PCRE sed”工具:
cat Dungeon | perl -pe 's/<\/.*?>//g'
perl -i -pe 's{</.*?>}{}g' Dungeon
grep 和 sed 的結合不太可能發生;兩者沒有交換足夠的上下文來傳遞現有匹配及其在文件中的位置。您可以嘗試grep -b
獲取每個匹配的位元組偏移量(並將它們與除了 sed 之外的其他東西從檔案中刪除對應的位元組範圍),或嘗試將grep -o
輸出轉換為適合 sed 的 POSIX 擴展正則表達式的怪物正則表達式(將換行符更改為a|b|c
分支語法的管道,確保轉義所有正則表達式特殊字符- 這需要另一個 ' sed' 呼叫本身),但任何一個都會付出比其價值更多的努力。