如何使用awk命令添加随机数?

时间:2017-09-12 17:57:52

标签: awk

例如,我的文件有以下行。

A,B,C
E,F,G
H,I,J

我希望输出如下。

A,B,C,0
E,F,G,1
H,I,J,2

我想在最后添加一个随机数。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

awk救援!

您要添加的内容不是随机数,而是序列号(随机数可能会发生冲突)

这是带有测试用例的脚本

$ printf "%s\n" {A..I} | paste -d, - - - | 
  awk '{print $0 "," NR-1}'

A,B,C,0
D,E,F,1
G,H,I,2

答案 1 :(得分:0)

看起来你想要的是一个顺序号码。这是一个 awk 解决方案:

awk '{printf "%s,%s\n", $0, p++}' input.txt

答案 2 :(得分:0)

根据条件:

  • 最后添加一个随机数

  • 下次不应重复该号码

使用 随机函数 生成随机整数的awk解决方案:

awk 'function randint(n){ return int(n * rand()) }
     BEGIN{ FS=OFS="," }
     { 
         rn=randint(++c);            # rn - random number 
         if (rn in a) {              # if the number had been shown before
             do { 
                 rn=randint(c+3*2)   # generate new random number
             } 
             while (rn in a)         # until a unique number is obtained
         } 
         a[rn]; $4=rn                # add new random number as last field
     }1' file

示例性输出:

A,B,C,0
E,F,G,6
H,I,J,5