首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SHA哈希列动态添加到CSV文件中(每行)?

如何将SHA哈希列动态添加到CSV文件中(每行)?
EN

Stack Overflow用户
提问于 2017-06-21 04:57:18
回答 2查看 854关注 0票数 0

我有多个CSV文件,格式如下:

代码语言:javascript
复制
"name","last_name","birth_day","register_date"
Michael,Jackson,August 29 - 1958,August 29 - 1958
Claude,Shannon,April 30 - 1916,April 30 - 1916

我想将每个文件转换为下一种格式:

代码语言:javascript
复制
"name","last_name","birth_day","register_date",sha256
Michael,Jackson,August 29 - 1958,August 29 - 1958,9949a1af67a3fb465eca01ca884f5ec7cd280078a39a0430a0f352bf19e16685  -
Claude,Shannon,April 30 - 1916,April 30 - 1916,fb464b3ab4f3f3db2384e192135cde97486ce96fe34e391a3294e5076f800aae  -

这意味着我想添加带有散列值的"sha256“列。

到目前为止,我可以得到每一行的散列值,但是我不知道如何将这个值作为列"sha256“添加到CSV文件中。

代码语言:javascript
复制
for file in ${DIR}/csv/*
do
    while IFS='' read -r line || [[ -n "$line" ]]; do
        echo -n $line | shasum -a 256
            /**
              Here it calculates the hash per row, and I want to add it
              at the end of the row as "sha256" column
            **/
    done < "$file"
done

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2017-06-21 07:46:18

您可以使用awk来完成此操作,它将适用于GNU awk >= 4.1.0:

代码语言:javascript
复制
awk -i inplace '
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
{
    if (FNR > 1){
        cmd = "echo -n \""$0"\" | shasum -a 256"
        while (cmd | getline line) {
            split(line, arr, "-")
            print $0","rtrim(arr[1])
        }
        close(cmd)
    }
    else {
        print $0",sha256"
    }
}' ${DIR}/csv/*

  • -i inplace用于编辑文件中的文件place
  • FNR是当前文件中的当前记录号
  • 有关将变量传递给外壳命令的信息,请参阅this post
  • sha256命令结果根据-分隔符进行拆分,以便仅保留sha256值。rtrim用于删除额外的空间
票数 0
EN

Stack Overflow用户

发布于 2017-07-31 04:24:57

为什么不在一行之后回显散列值呢?

代码语言:javascript
复制
for file in ${DIR}/csv/*
do
    while IFS='' read -r line || [[ -n "$line" ]]; do
        hash=$(echo -n $line | shasum -a 256 | cut -d\  -f1)
        echo $line,$hash
    done < "$file"
done

cutshasum输出中剥离尾随的-。如果您愿意,可以在$hash周围添加引号。

您应该考虑跳过每个csv的标题行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44662868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档