首页 > 解决方案 > 使用 bash 在 CSV 中随机更新列值

问题描述

我需要用一些增量值更新 CSV 中的列。例如:

Name, Surname, Reference
Joe, Joey, aaa
Jane, Doe, aab

需要转换为:

Name, Surname, Reference
Joe, Joey, ABC13842783
Jane, Doe, ABC24862121

现在如何将 printf 的值保存在第三列并将其保存回文件

awk 'BEGIN {
        FS=","
    }
    {
        printf("ABC~%08d\n", rand()*10000000) 
    }
' Users.csv

你能帮忙吗?

标签: bashshell

解决方案


awk -v prefix="ABC" 'BEGIN{FS=OFS=", "} NR>1{$3=prefix NR-1} {print}' file

随着您的更新:

awk 'BEGIN{FS=OFS=", "} NR>1{$3=sprintf("ABC%08d", rand()*10000000)} {print}' file

输出:

姓名,姓氏,参考
乔,乔伊,ABC09240458
简,能源部,ABC05939086

请参阅:8 个强大的 Awk 内置变量——FS、OFS、RS、ORS、NR、NF、FILENAME、FNR


推荐阅读