我正在尝试弄清楚如何使用bash或常见的GNU工具关闭HTML标记之后删除内容。例如,给定以下HTML模板,在不触及嵌入式注释而不使用Python等外部语言的情况下删除尾随注释的有效方法是什么?
<!DOCTYPE html>
<html>
<head>
<title>Site | Page 1</title>
</head>
<body>
<!-- Don't delete me! -->
</body>
</html>
<!--
Man, I really wish to vanish!
-->
我唯一能想到的就是将整个文件读入内存并在那里进行处理,即使用正则表达式魔法获取结束HTML标记的位置,此后截断以及写回磁盘等过时的东西。
答案 0 :(得分:1)
sed
sed -n '1,/<\/html>/p' some.html > truncated.html
% sed -n '1,/<\/html>/p' some.html
<!DOCTYPE html>
<html>
<head>
<title>Site | Page 1</title>
</head>
<body>
<!-- Don't delete me! -->
</body>
</html>
-n
- 禁止自动打印图案空间1
是第一行</html>
”的行是最后一行p
打印这些行答案 1 :(得分:1)
这可能对您有用:
sed '/<\/html>/q' file
答案 2 :(得分:0)
这应该这样做。做你需要对结果变量做的任何事情。
myFile="whatever_your_filename_is.something"
ProcessedText=$( sed 's:\(.\+</html>\).*:\1:' $myFile )
这样做是:将文件的内容传递给sed
,然后查找最大长度结尾的字符串并捕获它。文本的其余部分匹配,但未捕获。然后将该(即完整文本)替换为捕获的文本(即,直到并包括标签的所有内容)。
答案 3 :(得分:0)
在awk
:
awk 'NR==1,/<\/html>/' file