如何使用sed编辑保存在字符串中的文件?

时间:2016-02-16 09:53:17

标签: linux bash shell sed

我需要使用sed编辑保存在字符串中的文件。根据下面的例子,我想在php.ini文件中更改一些模式。下面的示例仅允许更改字符串中保存的内容。

[root@server ~]# PHPINI=/etc/php.ini
[root@server ~]# sed "s/somepattern/changedpattern/" <<< "$PHPINI"

有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您正在使用herestring语法,该语法在标准输入上传递字符串。您应该将文件名作为参数传递:

sed 's/somepattern/changedpattern/' /etc/php.ini

要覆盖现有文件,标准方法是写入临时文件,然后覆盖原始文件:

sed 's/somepattern/changedpattern/' /etc/php.ini > tmp && mv tmp /etc/php.ini

某些版本的sed支持&#34;就地&#34;编辑(在后台或多或少相同):

sed -i.bak 's/somepattern/changedpattern/' /etc/php.ini

这会创建一个带有.bak后缀的原始文件的备份。

如果文件名包含在变量中,那么只需使用

php_ini=/etc/php.ini
sed -i.bak 's/somepattern/changedpattern/' "$php_ini"

请注意我使用小写变量名。大写的应保留供shell使用。