如何在Solaris中查找和替换字符串?

时间:2019-11-13 18:24:37

标签: solaris

我的文件包含字符串OLD。我想将此字符串替换为NEW。我不仅要在当前目录中而且要在所有子目录中这样做,所以要递归地进行。

问题是,我在Solaris(v11.3)和以下命令上:

sed

perl

总是让我:非法选择。

f.e。我尝试了:sed -i -e's / OLD / NEW / g'*,我得到了:“-我非法选项”

还有其他选择吗?我也可以使用bash脚本。 这是一个生产环境,很遗憾,我无法安装任何编辑器。

更新:这可以按照我的要求进行:

perl -pi -e 's/OLD/NEW/g' *

但是它仅适用于当前目录中的文件。对于所有子目录,它返回我:

无法进行就地编辑:Folder_upgrades不是常规文件。 ... ...

但是,如果我转到Folder_upgrades并执行命令,它将起作用。

我应该添加什么来递归地执行它,所以我只运行一次,它将在所有子目录中的所有文件中起作用?

解决方案更新:该递归完全按照我的要求工作。尽管它返回有关文件不规则的错误,但仍然可以完成工作。

find . -exec perl -pi -e 's/OLD/NEW/g' '{}' \;

1 个答案:

答案 0 :(得分:0)

您可以使用如下代码:

while read i
do
sed -e 's/OLD/NEW/g' "$i" >/tmp/tmp_file
mv /tmp/tmp_file "$i"
done < (find . -name "*your wildcard for files")

但是请注意,这只是一个示例,如果文件名中有空格或其他特殊字符,则可能无法正常工作!