sed command is throwing error : char 80: unknown command: `*'

sed command is throwing error : char 80: unknown command: `*'

我正在尝试使用 sed 命令替换 属性 文件中的字符串。 属性 文件包含以下条目
com.rs.TestScopeService.resourceScopesA./**={TestAPI}

我想用以下字符串替换此条目
#com.rs.TestScopeService.resourceScopesB./**={TestAPI}

我的 sed 命令是 -- sed -i '/com.rs.TestScopeService.resourceScopesA./**={TestAPI}/c\#com.rs.TestScopeService.resourceScopesB./**={TestAPI}' /Users/Desktop/test.properties

以上 cmd 抛出错误:sed: -e expression #1, char 80: unknown command: `*'.

请帮助我更正命令以避免错误。 谢谢!

您可以通过在每个 * 之前添加反斜杠来解决 * 问题。这样做:

#!/bin/bash

originalstring="com.rs.TestScopeService.resourceScopesA./**={TestAPI}"

echo "$originalstring" | sed 's%^\(com\.rs\.TestScopeService\.resourceScopes\)A\(\./\*\*={TestAPI}\)$%#B%'
  • 我使用字符 % 作为 sed s 分隔符。
  • 任何用作分隔符或运算符的字符 sed 都必须加上反斜杠,以让 sed 知道将其视为文本。这里,.*不得不。
  • 相反,反斜杠括号,这样 sed 就会知道它们是用于分组,而不是匹配。
  • ^: 开始于...
  • $: 结束于...
  • </code> 和 <code> 用于构建结果字符串。 </code>是第一个括号(<code>com\.rs\.TestScopeService\.resourceScopes)的内容,</code>第二个(<code>\./\*\*={TestAPI}).