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

标签 linux bash shell sed

我需要使用 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/

相关文章:

c++ - 未定义引用。 DSO 缺失

bash - 在没有事先赋值的情况下声明和设置变量

java - 将项目导出为可运行 jar 时无法调用外部 Bash 程序

node.js - zsh:找不到命令:即使在我全局安装了express和express-generator之后也是如此

shell - 在oozie中计划/运行mahout命令

bash - 选择特定字段并将其写入新文件

linux - 使用 sed 命令替换文件内容

我的文本文件的 Linux cat 和 less 输出与 gedit 和其他 gnome 编辑器不同

linux - 如何连接本地和远程 Mercurial 仓库?

bash - 如何使用 Bash 从 JAR 中读取 MANIFEST.MF 文件