我有如下格式的 csv 文件,
1,123-456,IND
2,234-567,US
3,345-678,AUS
4,333-444,SA
我不想使用任何循环,我想使用 AWK 命令为每行生成 md5sum 值,如下所示输出格式,
1,123-456,IND,<md5 value>
2,234-567,US,<md5 value>
3,345-678,AUS,<md5 value>
4,333-444,SA,<md5 value>
答案1
我根本不会涉及 awk,我只是直接使用 shell,但是你说“我想尝试使用 awk 命令”所以我认为你有一个很好的理由:
awk -v OFS=',' '{
cmd = "echo \047" $0 "\047 | md5sum"
val = ( (cmd | getline line) > 0 ? line : "FAILED")
close(cmd)
sub(/ .*/,"",val)
print $0, val
}' file
1,123-456,IND,df6c21260b315d90fbbb6da2969b721c
2,234-567,US,764fd46b443bb125e48f154f964ee1d7
3,345-678,AUS,3b769d86ef698ca08de9dccabe402f02
4,333-444,SA,345b7e3e29df314844a7625e5b6e3486
上面假设每一行不包含您的 echo 版本可能会破坏的任何内容。