连接和MD5与awk

时间:2017-03-29 14:14:34

标签: bash awk cygwin md5sum

我想连接CSV文件中的所有列,然后应用MD5哈希。

我想用awk。

使用此代码,我得到第三列的串联。

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

我可以使用此代码获取哈希

echo -n "HELLO WORLD" | md5sum

有人可以帮我整合这两种方法吗?首先连接所有列,然后应用MD5哈希。

示例CSV:

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

输出将是:

 md5(ABCD)
md5(EFGH)
md5(IJKL)

1 个答案:

答案 0 :(得分:1)

连接列意味着删除分隔符,这是一种更简单的方法

tr -d '#' <file | md5sum

如果你只想提取第三列并将行连接成一个大字符串(但是为什么你丢失了信息)

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

注意现在这些第三列

ab
c

a
bc

将以相同的哈希结束。最好通过将值与相同的分隔符连接来保持字段的清晰度

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

但是,如果没有连接,您可以假设字段用换行符分隔符分隔并与

一起使用
cut -d# -f3 file | md5sum

除非有明确的原因。

更新:您希望为每行创建md5哈希值!这是问题中缺少的关键信息。

你不能像在其他程序中那样将行输入md5sum(每次都需要一次新的调用)。解决这个问题的一种方法是

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

ed5d34c74e59d16bd6d5b3683db655c3  -
8ad37f51cbc6de792c885acf17ba7e40  -
fe672d984bef56cbfce488080f8055b7  -

但请注意,如果您的字段长度不同且值重叠,则会丢失信息。

例如,AB#CA#BC会生成相同的哈希值,这可能是也可能不是,但我猜您可能没有考虑过。