我有一个名为reference.json
的引用json文件,其中包含我要在.html
文件中替换的键/值。
{
"a.js": "first.1a.js",
"b.js": "second.2b.js",
"c.js": "third.3b.js"
}
然后我得到了3个不同的html文件
test1.html
<!DOCTYPE html>
<html lang="en">
<head>
..
<body>
<div class="container">
<h1>file 1</h1>
</div>
<script src="a.js"></script>
<script src="b.js"></script>
<script src="c.js"></script>
</body>
</html>
test2.html
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
<div class="container">
<h1>file 2</h1>
</div>
<script src="a.js"></script>
<script src="b.js"></script>
<script src="c.js"></script>
</body>
</html>
文件夹folder1/test3.html
<!DOCTYPE html>
<html lang="en">
<head>
...
<body>
<div class="container">
<h1>file 3</h1>
</div>
<script src="../js/a.js"></script>
<script src="../js/b.js"></script>
<script src="../js/c.js"></script>
</body>
</html>
如何搜索我的所有.html文件,并使用grep和sed替换我的json中的值?
答案 0 :(得分:0)
假设您的reference.json格式正确,这个单行将为您完成:
$ CMD=" sed -i $( cat reference.json | grep ":" | sed 's/ //g;s/,//g;s/"//g' | sed 's/:/\//g' | awk '{printf("s/%s/g;",$0)}' )" && find . -name "*.html" -exec ${CMD} {} \;
说明:
使用reference.json形成sed替换表达式以在sed命令中使用它。使用find命令查找所有“* .html”文件并执行替换。
如果未格式化reference.json,则可以使用以下命令对其进行格式化:
$ python -m json.tool reference.json