Shell Script: grep and replace



我有一个文件"test.htm",包含以下内容

<html>
<head></head>
<body>site-is-down</body>
</html>

我试图使它"网站是上",如果它有文本"网站是下"。当我执行脚本时,它会显示正确的输出,但不会替换文件中的任何内容

 #!/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

更改此行:

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

对此:

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

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

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

grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'

最新更新