linux - 从 bash 脚本替换文件中的字符串

标签 linux bash shell scripting ssh

我需要在一个小的 bash 脚本中替换文件中的一个字符串,但是......我得到了奇怪的结果。

假设我要替换:

<tag><![CDATA[text]]></tag>

与:

<tag><![CDATA[replaced_text]]></tag>

我应该使用 sed 吗?我认为由于 /[ ] 我得到了奇怪的结果......

解决这个问题的最佳方法是什么?

最佳答案

带有 -p 选项的 Perl 几乎与 sed 一样工作,并且它的正则表达式有\Q(引号)开关:

perl -pe 's{\Q<tag><![CDATA[text]]></tag>}
           {<tag><![CDATA[replaced_text]]></tag>}' YOUR_FILE

在 Perl 中,您可以使用不同的标点符号来分隔表达式(在我的示例中为 s{...}{...})。

关于linux - 从 bash 脚本替换文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067828/

相关文章:

windows - 在 Windows 中仅命名带扩展名的文件

linux - 为什么我无法使用此 linux shell 脚本检测文件是否存在?

shell - awk:在 awk 脚本中分配一个 shell 变量

mysql - 如何在使用 shell 脚本将 csv 插入 mysql 时删除第一行

linux - 如何在 Git 上配置 socks5 代理

c - DECLARE_PER_CPU 变量存储在内核中的什么位置

linux - 按包含的字符串搜索文件并按大小排序

javascript - 由于(可能)错误的 bash 脚本导致的一些奇怪的错误

bash - 来自 Java 进程的 shell 函数错误 "exporting"

linux - 如何从终端定期运行命令(每 5 秒)