我想连接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)
答案 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#C
和A#BC
会生成相同的哈希值,这可能是也可能不是,但我猜您可能没有考虑过。