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を使用するように切り替えます。

関連情報