Substituindo palavras entre parênteses usando sed [duplicate]

0

Eu tenho um script python básico que se parece com isso:

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)

Eu queria excluir todas as instâncias de " my_ " neste arquivo, por isso executei o comando sed :

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

As saídas excluíram todas as instâncias de " my_ " em todos os lugares, exceto a linha no final do script aqui:

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

Por que sed não está substituindo as palavras entre parênteses que eu quero e como posso corrigir isso? Talvez minhas habilidades no google tenham falhado comigo, mas eu não li nada sobre o comando substituto de sed ser afetado por parênteses. Eu posso estar errado.

    
por John Smith 10.04.2016 / 19:24

1 resposta

0

Isso não tem nada a ver com o fato de ser a última linha, mas com o fato de que esta subsituição

's/my_//'

altera apenas a primeira ocorrência em uma linha.

Altere para:

's/my_//g'

Eu também consideraria, começando a usar a função de impressão ( print() ) incluindo

 from __future__ import print_function

na parte superior do seu script ou mais geral, mude para o uso do Python3 para esses tipos de scripts.

    
por 10.04.2016 / 20:37

Tags