2017-11-10 3 views
0

ich etwa 200 PHP-Dateien haben, die einige iconv() Funktionen, etwas wie folgt enthält:sed regex Schnitt Zeichenfolge

iconv('GB2312','UTF-8',$aRow[$aColumns[3]]) 
iconv('GB2312','UTF-8',$rs1['supplier']); 
iconv('GB2312','UTF-8',$aRow[ $aColumns[$i] ]); 

ich weiß nicht, was der beste Weg sein könnte iconv('GB2312','UTF-8', und letzte ) im Batch zu entfernen Modus, ohne die Variable zu berühren.

dieser RegEx könnte meinen Fall passen, aber ich weiß nicht, wie es zu benutzen mit sed: ^(iconv\(\'GB2312\'\,\'UTF-8\'\,)+|(\))

Und ich bin auch nicht sicher, dass sed die richtige Lösung

Jeden faced in diesem Fall ist Ein ähnliches Problem vorher?

+1

ein PHP-Skript schreiben, basierend auf 'token_get_all' (PHP Handbuch und einige Versuche machen). –

Antwort

1

können Sie diesen sed Befehl verwenden:

sed -i "s/iconv('GB2312','UTF-8',\([^)]*\))\(.*\)/\1\2/" file 

die Ihre PHP-Variablen in \1 extrahieren. /2 ist der Rest der Zeile (eine ; in dem Beispiel, das Sie gebucht haben)

0

Versuchen Sie diese Anweisung mit dem Ausgang.

cat file|cut -d, -f3|tr -d ');' 
0

Dies könnte für Sie arbeiten (GNU sed):

sed 's/iconv('\''GB2312'\'','\''UTF-8'\'',\([^)]*\))/\1/g' file 

ein Beispiel Zeichenfolge als Vorlage verwenden, ' durch '\'' und die Variable zu ersetzen wie alle Zeichen gehalten werden von nach dem zweiten , was ist kein Abschluss ). Diese Variable ist eingeschlossen in (...), d. H. \(...\), die als Rückreferenz auf die RHS des Ersetzungsbefehls übertragen werden kann.

0

Versuchen Sie, diese sed:

cat file | sed 's/iconv(.*,.*,\(.*\)).*/\1/g' 

Dies ist nur die Variable extrahieren.

0

Mit grep

grep -o '$[^)]*' infile