使用Sed用另一个字符串替换字符串?

时间:2011-11-03 22:59:24

标签: unix command-line sed

我试过这个:

sed -i 's/'Twas/It certainly was/g' *.txt

任何建议??

3 个答案:

答案 0 :(得分:2)

'Twas中的撇号被解释为一个近距离引用(由shell而不是sed),然后/g之后的后续单引号被解释为 open quote,它高兴地一直吞噬到脚本的末尾(或命令提示符,然后你得到神秘的>,这意味着shell认为还有更多的东西要来)。对于这种情况,

sed -i "s/'Twas/It certainly was/g" *.txt

应该工作;但是,shell双引号字符串会执行很多你通常不想要的sed程序。如果那里有任何正则表达式元字符,我会改为

sed -i 's/'\''Twas/It certainly was/g' *.txt

答案 1 :(得分:1)

使用双引号

sed -i "s/'Twas/It certainly was/g" *.txt

答案 2 :(得分:1)

尝试使用以下

grep -rl"旧字符串" directoryPath | xargs sed -i' s / oldString / new String / g'

示例:

grep -rl 10.113.1.115 matchdir | xargs sed -i' s / 10.113.1.115 / 10.113.1.65 / g'