linux - 通过 'tr' 或 'sed' 命令删除网页文件中的注释或注释

标签 linux sed tr

我愿意通过这样的Linux命令来压缩HTML文件。

tr -d "\n\t\r"

但是如何从网络文件中删除评论或注释。

例如,

<! -- adcdefg -->

<% -- asdfasdf -- %>

/* asdfasdfasdf */

我只是想消除这样的评论。

最佳答案

尝试(但要小心,它很容易删除太多内容,因此请先备份您的文件)

对于<! -- adcdefg -- ><% -- asdfasdf -- % > ( < 之后没有空格)

sed 's/<[!%][^>]*>//g' YourFile

说明

模式<[!%][^>]*>

  • 开始于 <
  • 后跟!% (使用类 [!%] )
  • 后跟任何非 > char(以^开头的类表示“不是其中之一”,*表示任何出现的情况,包括0)所以[^>]*是否出现任何非 >
  • 后跟>

行动s/Pattern//g

  • 将模式替换为空(// 是替换模式,内部空无一物,因此会删除搜索模式)
  • g选项用于指定该行中的所有出现,而不仅仅是第一个(默认情况下)

对于/* blabla */它有点热,因为它可能在里面和几行上包含很多东西。您应该给出一些假设以避免出现巨大的不可读的 sed ;-)

在这两种情况下,任何包含结束分隔符的字符串都会导致这样的基本 sed 出现问题

关于linux - 通过 'tr' 或 'sed' 命令删除网页文件中的注释或注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25780368/

相关文章:

c++ - 在 C++ 中使用 QProcess 重定向 gnome 终端的输出

linux - 在 Bash 中,如何在每行后面添加文字\n?

linux - 查找包含特定文本的行,并打印该文本之后的内容

file - 如何在 Unix 中替换 40GB 文件中的两个字符?

正则表达式(或 bash),获取引号之间的管道(perl)

bash - 使用 sed 或 awk 或任何东西有条件地删除前 N 个字符

linux - 联动后设置SONAME

c# - 在 Ubuntu Linux 上另存为期间共享冲突

linux - 如何在 Linux 上查找目录中的 csv 文件的总行数?

bash - BSD sed 无法全部替换 ",0,"