终端中CSV文件列行的MD5校验和

时间:2014-10-28 15:04:13

标签: bash

我在OS X上。

我有一大堆记录,我需要md5(或任何其他哈希函数)第n列,并将其添加到新列。

除了它没有以外,有些东西几乎有效:

  

awk'{
      tmp =“echo”$ 3“| openssl md5 | cut -f1 -d \”\“”tmp | getline cksum $ 2 =“,”cksum print}'< FILE.CSV

感谢您的帮助。

编辑

我的CSV:

  

FNAME,L-NAME,电子邮件,CPID,mcssid

     

测试仪,testurion,测试@ test.org,Campaign2014,12345   测试仪,testuci,测试@ test.com,Campaign2014,123456

结果:

dzh:Desktop dzh$ awk '{
    tmp="echo "$0" | openssl md5 | cut -f5 -d\" \""
tmp | getline cksum
$2=","cksum
print
}'< testfile.csv
fname,lname,email,cpid,mcssid ,60a0c14d2af1ac9b429d5323092d46e4
tester,testurion,test@test.org,Campaign2014,12345 ,01ef8935ad33c1a419d5a935f2eced69
tester,testuci,test@test.com,Campaign2014,123456 ,536f1e8583e3e2e1666cf9cda92664db
dzh:Desktop dzh$ md5 -s test@test.com
MD5 ("test@test.com") = b642b4217b34b1e8d3bd915fc65c4452
dzh:Desktop dzh$ md5 -s testuci
MD5 ("testuci") = c9e9ffe7eb5c77a59b77e897ff56b33c
dzh:Desktop dzh$ md5 -s Campaign2014
MD5 ("Campaign2014") = e9d6e2c2752c3d228783e0fa8134c545
dzh:Desktop dzh$ md5 -s 123456
MD5 ("123456") = e10adc3949ba59abbe56e057f20f883e

1 个答案:

答案 0 :(得分:0)

这似乎有用:

awk -F "," '{
cmd="md5 -q -s "$3
cmd|getline cksum
close(cmd)
printf "%s,%s,%s,%s,%s,%s\n", $1, $2, $3, $4, $5, cksum
}' < testfile.csv

你需要关闭管道,我在安静模式下使用md5而不是openssl来获得总和。此外,您需要-F“,”告诉awk字段用逗号分隔。