当前位置: 首页 > 面试题库 >

使用变量时无法替换sed

暨高洁
2023-03-14
问题内容

尝试用sed替换字符串时发生奇怪的事情。这有效:

find /home/loni/config -type f -exec sed -i 's/some_pattern/replacement/g' {} \;

因此,当我手动键入字符串时,它可以工作。但在以下情况下,不会发生替换:

find /home/loni/config -type f -exec sed -i 's/${PATTERN}/${REPLACEMENT}/g' {} \;

当我回显这两个变量PATTERN和REPLACEMENT时,它们具有正确的值。

我试图用配置目录中所有文件中的替换字符串替换所有出现的模式字符串。


问题答案:

尝试

find /home/loni/config -type f -exec sed -i "s/${PATTERN}/${REPLACEMENT}/g" {} \;

代替。’引号不会扩展变量。



 类似资料:
  • 操作步骤: 菜单栏: Refactor —> Replace Temp with Query...

  • 问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。

  • 有没有办法做到这一点?

  • 在为Logback appender指定实现类时,是否可以使用变量替换?例如, 如上所述指定时,Logback似乎试图加载名称为“${LOGFILE_APPENDER_CLASS}”的类。也就是说,不执行变量替换! 我想将输出发送到eclipse开发人员的生产和控制台中的文件。如果可能的话,我不想重复appender配置,因为它包含了一长串过滤器,在大多数情况下都是相同的。

  • 我有一个网站。在过滤器的context param和init param中包含变量的xml文件。我想用应用程序启动时从属性文件中获取的值替换这个变量。 我的网络。xml是这样的: 和网络。属性 以下是部署的工作原理: 1) 部署工具读取给定的属性文件,用PROD或Dev值(在该工具中设置的值)替换变量,并将该文件推送到JBoss下的应用程序模块; 2) 在JBoss上启动应用程序的部署。我想要那个

  • 这就是我现在的代码,我试着放入“\n”、“ ”和“ ”,但都不起作用,现在我放入“\n”只是为了明确我想在哪里换行: 我的返回值放在mappingDocsVariable中,然后用以下代码生成docx文件: