Obecnie używam AWK, aby znaleźć i zastąpić część pierwszych trzech wystąpień ciągu. Ciąg jest sformatowany jako taki, aw pliku znajduje się wiele takich ciągów:
func(tempID="39849235",count='12');
Za pomocą tego linku udało mi się znaleźć metodę użycia AWK do znalezienia i zastąpienia pierwszych trzech instancji ciągu. Zmieniłem go na to, co musiałem zrobić, a fragment mojego skryptu znajduje się poniżej:
id=12349876
awk 'BEGIN {matches=0}
matches < 3 && /.*tempID.*/ { sub(/tempID="[0-9]+"/,"tempID='"$id"'"); matches++ }
{ print $0 }' filName.py >filName.py.changed
Celem powyższego kodu jest dopasowanie w dowolnym wierszu zawierającym tempID i zastąpienie liczby przypisanej do tempID wartością przechowywaną w zmiennej o nazwie $id
. Znajdź i zamień działa dobrze, ale wydaje mi się, że jedynym problemem jest to, że bez względu na to, jak je zbuduję, dane wyjściowe wypisują $ id bez cudzysłowów. Próbowałem uciec od cytatów i wstawiać pojedyncze tiki, ale niezależnie od tego, czy zmieniono wiersz na:
func(tempID=39849235,count='12');
Próbowałem usunąć podwójne cudzysłowy wokół części zamiennej i nadać jej taką strukturę tempID="$id"
, ale niestety to po prostu zastępuje numer identyfikacyjny ciągiem $id
.
Daj mi znać, jeśli istnieje sposób, aby znaleźć i zastąpić wartość tempID i otoczyć wartość cudzysłowami. Nie utknąłem z AWK, więc każda inna metoda z jakimkolwiek innym narzędziem, takim jak sed, również działałaby dobrze.