Hallo, vielleicht kann mir schnell einer einen Tip geben, muss einige PHP Dateien nach einen bestimmten Ausdruck durchsuchen..
Erst mal Hintergrund
Habe einen Webserver auf den laufen einige PHP Sachen und den möchte ich auf Mysql 5.0 updaten. Leider hat sich da im Syntax was geändert so dass Anfragen mit "Left join" Probleme machen.
(Left join bindet stärker als ",")
Folgende Anfrage macht z.b. Probleme:
SELECT * FROM t1, t2 LEFT JOIN t3 on t1.ID=t2.ID
Muss diese Anfragen jetzt finden und umschreiben auf
SELECT * FROM (t1, t2) LEFT JOIN t3 on t1.ID=t2.ID
Um genau das Finden der Anfragen geht es jetzt. Um eine manuelle Nachbearbeitung komme ich dann eh nicht rum.
Ich suche also alle Dateien zwischen denen zwischen FROM und LEFT JOIN ein "," drin ist.
grep -R -i -E "FROM.+,.+LEFT\ JOIN" *
liefert mir auch schon fast das richtige Ergebnis, sofern die SQL-Anfragein einer Zeile steht. Wie kann ich den Ausdruck erweitern dass es über mehrere Zeilen funktioniert:
SELECT * FROM t1, t2
LEFT JOIN t3 on t1.ID=t2.ID
alternativ würde mir jetzt noch einfallen, mit sed alle Zeilenumbrüche durch Leerstellen ersetzen und dann in grep füttern.
Gruß
Roland