我想 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”调用),但无论是哪种方式都会付出比它值得的努力更多的努力。