Dies funktioniert möglicherweise mit Bash / GNU sed:
%Vor%oder eine meist sed Lösung:
%Vor%Ersetzt %code% von %code% mit md5sum
Erläuterung:
In der ersten: - Identifizieren Sie die Spalten und verwenden Sie Rückverweise als Parameter im Bash-Befehl, der ersetzt und ausgewertet wird, dann kosmetische Änderungen vornehmen, um die Dateibeschreibung (in diesem Fall Standardeingabe) zu verlieren, die durch den md5sum-Befehl erzeugt wird. p>
In der zweiten: - ähnlich der ersten, aber hive die Eingabe-String in den Laderaum, dann nach der Auswertung der md5sum Befehl, fügen Sie die Zeichenfolge %code% auf den Musterraum (md5sum Ergebnis) und Substitution anordnen, um zu passen.
Also, du willst das nicht wirklich mit %code% machen. Jede der populären High-Level-Skriptsprachen - Perl, Python, Ruby usw. - würde dies einfacher und robuster machen. Allerdings wird so etwas funktionieren.
Gegebene Eingabe wie folgt:
%Vor%(z. B. eine Zeile mit vier Spalten), können wir eine gegebene Spalte mit ihrer md5-Prüfsumme wie folgt ersetzen:
%Vor%Dies hängt von GNU awk ab (Sie haben dies wahrscheinlich standardmäßig auf einem Linux-System), und es verwendet %code% , um die md5-Prüfsumme zu generieren. Wir erstellen zuerst eine Shell-Befehlszeile in %code% , um die ausgewählte Spalte an den Befehl %code% zu übergeben. Dann leiten wir die Ausgabe in die Variable %code% und ersetzen Spalte 2 durch die Prüfsumme. Bei der obigen Beispieleingabe wäre die Ausgabe dieses awk-Skripts:
%Vor%Vielleicht haben Sie eine bessere Zeit mit %code% als %code% , obwohl ich noch kein Benchmarking durchgeführt habe.
die Eingabe (scratch001.txt):
%Vor%wurde mit %code% :
transformiert %Vor%erzeugt die Ausgabe:
%Vor%Das kannst du auch mit Perl machen:
%Vor%Wenn Sie große Datenmengen verschleiern möchten, ist es möglicherweise schneller als sed und awk, die für jede Zeile einen md5sum-Prozess forkieren müssen.
Ich habe die Antwort von pasted larsks kopiert, aber ich habe die Schlusszeile hinzugefügt, um das in diesem Beitrag angegebene Problem zu umgehen: gawk / awk: Verlegen von Datum zu getline * manchmal * wird nicht funktionieren
%Vor%Wie kann ich eine Spalte mit ihrem Hash-Wert (wie MD5) in awk oder sed ersetzen?
Die Originaldatei ist sehr groß, also muss ich wirklich effizient sein.
Also, du willst das nicht wirklich mit awk
machen. Jede der populären High-Level-Skriptsprachen - Perl, Python, Ruby usw. - würde dies einfacher und robuster machen. Allerdings wird so etwas funktionieren.
Gegebene Eingabe wie folgt:
%Vor%(z. B. eine Zeile mit vier Spalten), können wir eine gegebene Spalte mit ihrer md5-Prüfsumme wie folgt ersetzen:
%Vor% Dies hängt von GNU awk ab (Sie haben dies wahrscheinlich standardmäßig auf einem Linux-System), und es verwendet openssl
, um die md5-Prüfsumme zu generieren. Wir erstellen zuerst eine Shell-Befehlszeile in tmp
, um die ausgewählte Spalte an den Befehl md5
zu übergeben. Dann leiten wir die Ausgabe in die Variable cksum
und ersetzen Spalte 2 durch die Prüfsumme. Bei der obigen Beispieleingabe wäre die Ausgabe dieses awk-Skripts:
Dies funktioniert möglicherweise mit Bash / GNU sed:
%Vor%oder eine meist sed Lösung:
%Vor% Ersetzt is
von this is a test
mit md5sum
Erläuterung:
In der ersten: - Identifizieren Sie die Spalten und verwenden Sie Rückverweise als Parameter im Bash-Befehl, der ersetzt und ausgewertet wird, dann kosmetische Änderungen vornehmen, um die Dateibeschreibung (in diesem Fall Standardeingabe) zu verlieren, die durch den md5sum-Befehl erzeugt wird. p>
In der zweiten: - ähnlich der ersten, aber hive die Eingabe-String in den Laderaum, dann nach der Auswertung der md5sum Befehl, fügen Sie die Zeichenfolge G
auf den Musterraum (md5sum Ergebnis) und Substitution anordnen, um zu passen.