带有bash的csv的唯一结束行

时间:2017-11-20 02:30:03

标签: bash csv

我想以下列形式为csv文件中的每一行添加一个唯一的链接

data1,name1,date1
data2,name2,date2

之后,它应该看起来像

data1,name1,date1,somedomain.com/test-ZmQwZTdiNzIyZGExYTc1Njg1YjJjMWE2
data2,name2,date2,somedomain.com/test-ZTdmYjY4N2M5MjM0NzcxYjJjNGE0N2I5

我想用

生成唯一的字符串
date +%s | sha256sum | base64 | head -c 32 ; echo

我找到了部分方法,但我不知道如何把它放在一起。

1 个答案:

答案 0 :(得分:2)

您可以使用内置awk命令的getline来调用外部命令,并将结果附加到每行的末尾。

假设您的日期位于最后一个字段$NF

awk -F "," '{
    cmd = "date -d "$NF" +%s | sha256sum | base64 | head -c 32"
    cmd | getline hash
    print $0 FS hash
    close(cmd)
}' file.csv

<强>输入

data1,name1,2017-11-01
data2,name2,2017-11-02

<强>输出

data1,name1,2017-11-01,YTRiYWNmYmExMmM0NjJhYjAzNzU4ZGIx
data2,name2,2017-11-02,MTBjYjNlZTc5ZmNlMTU2NWFiY2Q2NmJk