2016-05-06 10 views
0

Wollte in Notepad ++ & shell sehen Wie transponiere ich auf beiden Seiten des gleich Zeichen
Beachten Sie die Leerzeichen um die =, die auch variieren und Einrücken Änderungen.Notizblock ++ & Shell. Wie transponiere ich auf beiden Seiten des Gleichheitszeichens '='

AND TBz.C1 = C1.x1 
     AND C1.x2  = TBv.C3 
        AND TBg.p1 =  C1.r3 
    AND Tbp.sx = C1.hx 

O/p: alle von C1 sollte

AND C1.x1 = TBz.C1 
    AND C1.x2 = TBv.C3 
    AND C1.r3 = TBg.p1 
    AND C1.hx = Tbp.sx 

auf der einen Seite sein Was ich versucht - awk alles nach = in Puffer und transponieren aber es transponieren nicht in allen Fällen. Suche nach - N ++ Notepad ++ und Shell-basierte Lösungen. Ich muss dies häufig auf Red H Box sowie W7 tun. PL nehmen Sie einen Moment, um die Schritte Ihres Regex zu brechen und mir zu erklären, was los ist Danke

Antwort

1

Ich würde empfehlen, dass Sie beginnen, indem Sie ein Plugin verwenden, um Ihren Code auszurichten.

Zum Beispiel könnten Sie Code alignment verwenden. Dies kann über den Plugin-Manager installiert werden. (Ausrichten von „=“ ist eine eingebaute Abkürzung für das Plugin.)

Sobald Sie getan haben, dass der letzte Schritt viel mehr spezifisch für Ihren Anwendungsfall ist, so dass Sie es tun müssen, werde manuell. Ihr Code wird zur Zeit in etwa so aussehen:

AND C1.x1 = TBz.C1 
AND C1.x2 = TBv.C3 
AND TBg.p1 = C1.r3 
AND Tbp.sx = C1.hx 

Alles, was Sie jetzt tun müssen, suchen und ersetzen Sie alle beanstandeten Codezeilen wieder um sie, Einfanggruppen verwenden. Eine vollständige Dokumentation zu Notepad ++ Regex finden Sie unter here.

Zum Beispiel könnten Sie suchen:

AND (.*) = (C1.*) 

Und ersetzen mit:

AND \g2 = \g1 

Damit die Reihenfolge umzuschalten.

Der Leerraum könnte wieder etwas durcheinander geraten. In diesem Fall könnten Sie das automatische Ausrichtungs-Plugin erneut ausführen.

2

Diese awk Einzeiler Ihre Quellcodes formatiert und C1... auf der linken Seite des = bewegen:

awk '$4~/^C1/{t=$4;$4=$2;$2=t}{$1=$1}7' file 

Test mit den angegebenen Daten:

kent$ cat f 
AND TBz.C1 = C1.x1 
     AND C1.x2  = TBv.C3 
        AND TBg.p1 =  C1.r3 
    AND Tbp.sx = C1.hx 

kent$ awk '$4~/^C1/{t=$4;$4=$2;$2=t}{$1=$1}7' f 
AND C1.x1 = TBz.C1 
AND C1.x2 = TBv.C3 
AND C1.r3 = TBg.p1 
AND C1.hx = Tbp.sx 
Verwandte Themen