0

我有一个包含以下内容的文件“ 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
4

2 回答 2

1

更改此行:

sed -e "s/down/up/g" test.htm

对此:

sed -i -e "s/down/up/g" test.htm

-i标志意味着“就地”编辑文件,而不是将替换内容写入标准输出。

于 2013-07-29T16:36:25.670 回答
0

在跨越多个目录的大量文件中替换某个单词/字符串的每次出现,这是我发现的最快的方法。它使用 grep 搜索某个单词,如果找到它,它会运行 sed 来替换您想要的字符串。

grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'
于 2019-10-23T07:09:07.927 回答