使用 sed 替换括号中的单词

使用 sed 替换括号中的单词

我有一个基本的 python 脚本,如下所示:

my_name = 'Zed'
my_age = 35
my_height = 74
my_weight = 180
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'

print "let's talk about %s" % my_name
print "he's %d inches tall" % my_height
print "he's %d pounds heavy" % my_weight
print "actually, that's not too heavy" 
print "he's got %s eyes and %s hair" % (my_eyes, my_hair)
print "his teeth are usually %s depending on the coffee" % my_teeth

print "if I add %d, %d, and %d, I'd get %d" %(my_age, my_height, my_weight, my_age + my_height + my_weight)

my_我想删除此文件中“”的所有实例,因此我运行了sed命令:

sed 's/my_//' pythonscript.py > altered_mypythonscript.py

输出删除了my_除此处脚本末尾的行之外的所有“”实例:

print "if I add %d, %d, and %d, I'd get %d" %(my_age, my_height, my_weight, my_age + my_height + my_weight)

为什么sed没有替换我想要的括号中的单词,我该如何解决这个问题?也许我的谷歌能力让我失败了,但我还没有读过任何关于sed的替代命令受括号影响的内容。但我可能是错的。

答案1

这与最后一行无关,而是与此替换这一事实有关

's/my_//'

只改变一行中第一次出现的地方。

将其更改为:

's/my_//g'

我还会考虑,print()通过包含开始使用打印功能()

 from __future__ import print_function

在脚本的顶部或更一般地切换到使用 Python3 来处理此类脚本。

相关内容