Sed wird durch die Ausgabe eines Bash-Befehls ersetzt, wobei die Capture-Gruppe als Argument verwendet wird

8

Ich versuche, eine Base64-Substitution mit sed zu machen.

Was ich versuche, ist folgendes:

%Vor%

Im Englischen wäre das:

  • Mathe ein Muster
  • Erfassen Sie Gruppen
  • Verwenden Sie die erfasste Gruppe in einem Bash-Befehl
  • Verwenden Sie die Ausgabe dieses Befehls als Ersetzungszeichenfolge

Bisher funktioniert mein Befehl nicht, da nur von sed und nicht von dem Bash-Befehl, den ich rufe, bekannt ist.

Welche elegante Lösung muss ich eine Erfassungsgruppe zu einem Befehl übergeben, von dem ich die Ausgabe verwenden möchte?

Bearbeiten

Hier ist ein minimales Beispiel für das, was ich versuche:

Ich habe die folgende Datei:

%Vor%

Und ich möchte die base64 durch einfachen Text ersetzen:

%Vor%

In Zukunft muss ich die Rückwärtsoperation ausführen (Codierungszeichenfolge in base64 für die decodierte Datei)

Ich habe angefangen, awk zu benutzen, aber ich könnte mit sed einfacher (und viel eleganter) werden. Bisher habe ich mit awk das (wo $bundle ist die Datei, die ich bearbeite):

%Vor%     
statox 06.09.2016, 12:27
quelle

2 Antworten

11

Sie können e in GNU sed verwenden, um die Substitutionszeichenfolge an eine Shell zur Auswertung zu übergeben. Auf diese Weise können Sie sagen:

%Vor%

Wo eine erfasste Gruppe enthält. Alles zusammen:

%Vor%

Dies ist nützlich, wenn Sie wie in diesem Fall eine Shell-Aktion mit einer erfassten Gruppe ausführen möchten.

Nehmen wir also den ersten Teil der Zeile, dann den Teil, der codiert werden muss, und schließlich den Rest. Sobald dies geschehen ist, lassen Sie uns diese Teile mit printf drucken, was die Verwendung von base64 -d gegen die zweite Scheibe auslöst:

%Vor%

Schritt für Schritt:

%Vor%

Die Idee kommt von dieser superbe Antwort von anubhava auf Wie ändere ich das Datumsformat in sed? .

    
fedorqui 06.09.2016, 13:27
quelle
3

Es klingt, als ob Sie das versuchen:

%Vor%

unter der Annahme, dass Ihre echo | base64 der richtige Ansatz ist.

    
Ed Morton 06.09.2016 14:08
quelle

Tags und Links