我需要使用sed编辑保存在字符串中的文件。根据下面的例子,我想在php.ini文件中更改一些模式。下面的示例仅允许更改字符串中保存的内容。
[root@server ~]# PHPINI=/etc/php.ini
[root@server ~]# sed "s/somepattern/changedpattern/" <<< "$PHPINI"
有人可以帮忙吗?提前谢谢。
答案 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使用。