Shell脚本:grep和replace

时间:2013-07-29 16:33:38

标签: shell sed grep

我的文件“ 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

2 个答案:

答案 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'