我的文件“ test.htm ”包含以下内容
<html>
<head></head>
<body>site-is-down</body>
</html>
如果文字“site-is-down”,我试图将其设为“site-is-up”。 当我执行脚本时它显示正确的输出,但它没有替换文件中的任何内容
#!/bin/ksh
if grep "site-is-down" test.htm; then
sed -e "s/down/up/g" test.htm
else
echo "Site is already up"
fi
答案 0 :(得分:1)
更改此行:
sed -e "s/down/up/g" test.htm
对此:
sed -i -e "s/down/up/g" test.htm
-i
标志表示“就地”编辑文件,而不是将替换写入标准输出。
答案 1 :(得分:0)
要替换跨越多个目录的大量文件中某个单词/字符串的每次出现,这是我发现的最快方法。它使用grep搜索某个单词,如果找到它,则运行sed替换您想要的字符串。
grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'