我想使用sed编辑器读取文件并替换所有文件
带有XYZ$
的字符串xyz$
的出现次数。如果XYZ$
我只想这样做
是一个完整的词,而不是它是否嵌入另一个字符串。
我尝试了以下操作,但没有效果:
sed -c -i "s/\bXYZ\$\b/xyz\$/g" file1.txt
或许\$
未被解释为文字美元符号,可能是因为它位于一对\b
内(用于表示单词边界)。有什么建议吗?
答案 0 :(得分:0)
\b
之后您无法匹配$
,因为它不被视为单词字符。
您可以使用此sed:
sed -i 's/\bXYZ\$/xyz$/g' file
如果您想确保在$
之后始终存在非单词字符,请使用:
sed -ir 's/\bXYZ\$([^[:alnum:]]|$)/xyz$\1/g' file
答案 1 :(得分:-1)
尝试使用:
"s/\bXYZ\b\$ /xyz\$ /g"
单词字符是[a-zA-Z0-9_],因此$将永远不会在边界内匹配(\ b)。
结束你的界限,检查以确保$是下一个字符,后跟一个空格。
输入:
This xyz$ is unchanged.
This XYZ$is unchanged
This XYZ$ is changed.
输出:
This xyz$ is unchanged.
This XYZ$is unchanged
This xyz$ is changed.