我需要使用 sed 编辑保存在字符串中的文件。按照下面的示例,我想更改 php.ini 文件中的一些模式。下面的示例将只允许更改字符串中保存的内容。
[root@server ~]# PHPINI=/etc/php.ini
[root@server ~]# sed "s/somepattern/changedpattern/" <<< "$PHPINI"
有人可以帮忙吗?提前致谢。
最佳答案
您正在使用在标准输入上传递字符串的 herestring 语法。您应该改为将文件名作为参数传递:
sed 's/somepattern/changedpattern/' /etc/php.ini
要覆盖现有文件,标准方法是写入一个临时文件,然后覆盖原来的文件:
sed 's/somepattern/changedpattern/' /etc/php.ini > tmp && mv tmp /etc/php.ini
一些版本的 sed 支持“就地”编辑(在后台做的差不多):
sed -i.bak 's/somepattern/changedpattern/' /etc/php.ini
这将创建带有 .bak
后缀的原始文件的备份。
如果文件名包含在变量中,则只需使用它即可
php_ini=/etc/php.ini
sed -i.bak 's/somepattern/changedpattern/' "$php_ini"
请注意我使用小写变量名。应保留大写字母以供 shell 使用。
关于linux - 如何使用sed编辑保存在字符串中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429125/