2017-03-29 2 views
-1

Ich möchte alle Spalten in einer CSV-Datei verketten und dann einen MD5-Hash anwenden.Verkettung und MD5 mit awk

Ich möchte awk verwenden.

Mit diesem Code bekomme ich die Verkettung der dritten Spalte.

awk -F'#' '{ { printf "%s",$3 } }' 

und ich kann den Hash mit diesem Code

echo -n "HELLO WORLD" | md5sum 

bekommen Kann mir jemand helfen, diese beiden Methoden zu integrieren? Zuerst concat alle Spalten, dann wenden Sie den MD5-Hash.

Beispiel CSV:

A#B#C#D 
E#F#G#H 
I#J#K#L 

Der Ausgang wird:

md5(ABCD) 
md5(EFGH) 
md5(IJKL) 
+5

Haben Sie versucht, 'echo -n" HELLO WORLD "' mit Ihrem awk Befehl zu ersetzen? Was macht das nicht, was du willst? –

+0

Danke für Ihre Antwort. hier meinen CSV: A # B # D # C E # F # G # H I # J # K # L Der Ausgang wird sein: md5 (ABCD) md5 (EFGH) md5 (IJKL) –

Antwort

1

verketten Spalten bedeuten wird das Trennzeichen zu entfernen, hier ist ein einfacher Ansatz

tr -d '#' <file | md5sum 

wenn Sie wollen extrahiere nur die dritte Spalte und verknüpfe Zeilen zu einer großen Zeichenkette (aber warum, weil du Informationen verlierst)

cut -d# -f3 file | tr -d '\n' | md5sum 

beachten Sie, dass nun diese dritte Spalte

ab 
c 

und

a 
bc 

wird mit dem gleichen Hash-Ende. Besser die Unterscheidbarkeit der Felder zu erhalten, indem die Werte mit dem gleichen Trennzeichen

cut -d# -f3 file | paste -sd# | md5sum 

jedoch verketten, ohne Verkettung können Sie davon ausgehen, die Felder mit den Newline-Trennzeichen getrennt sind und gehen mit

cut -d# -f3 file | md5sum 

es sei denn, ist ein unspezifizierter Grund.

UPDATE: Sie möchten MD5-Hash für jede Zeile erstellen! Welches war die kritische Information in der Frage fehlt.

Sie können die Zeilen nicht wie in den anderen Programmen in md5sum pipen (Sie benötigen jedes Mal einen neuen Aufruf). Eine Möglichkeit, dies zu adressieren ist

tr -d '#' <file | while read line; do echo $line | md5sum; done 

ed5d34c74e59d16bd6d5b3683db655c3 - 
8ad37f51cbc6de792c885acf17ba7e40 - 
fe672d984bef56cbfce488080f8055b7 - 

jedoch zur Kenntnis, dass Sie verlieren Informationen, wenn Sie Ihre Felder sind in der Länge und überlappend in Werten variieren.

Zum Beispiel, AB#C und A#BC wird den gleichen Hash generieren, die möglicherweise oder nicht gewünscht werden, aber ich denke, Sie haben vielleicht nicht berücksichtigt.

+0

ja verpasst, wenn ja, was ist der Zweck der Frage obwohl? – karakfa

+0

Ich habe keine Ahnung, was der Zweck der Frage ist. Daher keine Antwort :-). –

+0

Danke für diesen Ansatz. hier meinen CSV abtasten: A # B # C# D E # F # G # H I # J # K # L Der Ausgang wird: md5 (ABCD) md5 (EFGH) md5 (IJKL) –