我在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
答案 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字段用逗号分隔。