【发布时间】:2011-12-09 21:25:00
【问题描述】:
我想从 shell 脚本生成一个静态网站。
shell 脚本代码示例如下:
author="Github INC."
name="Github"
description="social coding"
text=$(awk '{ print }' main.html)
main.html 可能如下所示:
<!DOCTYPE html>
<html>
<head>
<title>$name</title>
</head>
<body>
......
我想将 html 文档中标题标签之间的 $name 字符串替换为 bash 脚本中的 $name 字符串(在此示例中为 Github),因此在此示例中 应该 如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Github</title>
</head>
<body>
......
我可以通过将 shell 脚本代码更改为:
author="Github INC."
name="Github"
description="social coding"
text="$( sed "s/<title>.*<\/title>/<title>$name<\/title>" main.html )"
但是如果我在 html 文档中使用多个字符串,那么它将不再起作用...
例如:
<!DOCTYPE html>
<html>
<head>
<title>$name</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="author" content="$author" />
<meta name="description" content="$description" />
<link rel="shortcut icon" href="favicon.png" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
任何想法如何将 Shell 脚本中的字符串与 HTML 文档连接起来?
【问题讨论】:
-
我应该如何用 awk 做到这一点???
-
不确定@RobW 是什么意思。
sed 's/1/2/g;s/a/b/g;s/txt/newTxt/g'允许您更改任意数量的行。通常对于多个 sed cmd(比我上面的示例更多),人们将所有 sed 操作放入一个单独的文件中,每行 1 个 cmd,然后像sed -f mySedFixer.sed myTest.html.template > myTest.html一样执行或者如果你在 Linux 中工作,看看是否你 sed 支持-i选项,它保存对命名文件的修改,而无需重定向到临时文件并重命名。祝你好运。 -
@shellter “仅在单行上工作”是指
sed逐行处理输入。
标签: html templates shell sed awk