Ich versuche, eine Base64-Substitution mit sed zu machen.
Was ich versuche, ist folgendes:
%Vor%Im Englischen wäre das:
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):
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:
Wo eine erfasste Gruppe enthält. Alles zusammen:
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:
Schritt für Schritt:
%Vor%Die Idee kommt von dieser superbe Antwort von anubhava auf Wie ändere ich das Datumsformat in sed? .