Ich versuche, ein Perl-Einzeiler zu schreiben für einen String q (abc * und anhängen, um es zu suchen, wenn die Zeichenfolge gefunden wird Meine Eingabedatei ein paar Dinge wie diese hat.Perl suchen und fügen Sie
q(abc0x[...
q(abc1x[...
q(abc2x[...
q(abc0y[...
würde ich die Ausgabe gerne sein:
q(abc0x_str[...
q(abc1x_str[...
q(abc2x_str[...
q(abc0y_str[...
ich habe dies versucht:
perl -pi -e "s/(q\((abc\S+)\[)/\$1_str\1/" file
aber die $1
zurück Referenz scheint den Wert aus meiner Umgebung zu holen, wenn ich echo $1
und Pre-pends Typen _str
anstatt es zu anhängt, so dass diese Ausgabe:
-project_strq(abc0x[...
wo $1
gerade passiert in meiner Umgebung „-Projekt“ zu sein.
Alternativ habe ich versucht:
perl -pi -e "s/(q\(abc\S+)\[)/_str\1/" file
aber die Ausgabe hier so aussieht, anstatt mit den vorgehängten _str
:
_strq(abc0x[...
Weder Ausgang ist das, was ich erwarte. Irgendein Rat?
Ist das Ihr tatsächlicher Einzeiler? Ich bekomme einen Fehler. Ich muss dem 1. rechten Paren entkommen. – toolic