Sed 如果单词的一部分匹配,请替换

Sed 如果单词的一部分匹配,请替换,sed,Sed,我的文本如下所示: 猫 捕获 猫鼠 猫 我想用“狗”代替“猫”。 当我这样做的时候 sed“s/cat/dog/” 我的结果是: 狗 捕获 猫鼠 猫 如果单词中只有一部分匹配,如何替换为sed?有一个错误: 您缺少g修饰符 sed 's/cat/dog/g' g 看 如果您只想在单词部分匹配的情况下用“猫换狗”: $ perl -pe 's/cat(?=.)/dog/' file.txt cat dogch dog_mouse dogty 我用积极的态度环顾四周,明白吗 如果您真的想要

我的文本如下所示:


捕获
猫鼠

我想用“狗”代替“猫”。
当我这样做的时候

sed“s/cat/dog/”

我的结果是:


捕获
猫鼠

如果单词中只有一部分匹配,如何替换为sed?

有一个错误: 您缺少
g
修饰符

sed 's/cat/dog/g'
g


如果您只想在单词部分匹配的情况下用“猫换狗”:

$ perl -pe 's/cat(?=.)/dog/' file.txt
cat
dogch
dog_mouse
dogty
我用积极的态度环顾四周,明白吗

如果您真的想要sed:

sed '/^cat$/!s/cat/dog/' file.txt
仅当猫是字符串的一部分时才替换猫

bash-3.00$ sed 's/cat\([^$]\)/dog\1/' t
cat
dogch
dog_mouse
dogty
要替换所有出现的
cat

bash-3.00$ sed 's/cat/dog/' t
dog
dogch
dog_mouse
dogty
此问题的awk解决方案


你确定吗
sed's/cat/dog/“
应在
cat\u鼠标
行中进行替换。您是否正确地表示了输入数据。(例如,它实际上是在一行上,而不是在不同的行上?)最好提供您期望的输出。这是无关的,除非提问者错误地陈述了输入数据。
bash-3.00$ sed 's/cat\([^$]\)/dog\1/' t
cat
dogch
dog_mouse
dogty
bash-3.00$ sed 's/cat/dog/' t
dog
dogch
dog_mouse
dogty