我正在为简单的bigdata测试准备数据。以下是我的代码。
#!/bin/bash
year_start=1900
year_end=2014
for(( year=$year_start; $year <= $year_end; year=`expr $year + 1` ))
do
for(( d=1; $d < 365; d=`expr $d + 1` ))
do
random=$RANDOM
echo $year|awk '{printf("%d%0.5d\n", $0,$random )}'
done
done
然而,awk正在打印以下而不是年份+一些随机数
190001900
190001900
190001900
190001900
190001900
190001900
190001900
190001900
任何帮助?
答案 0 :(得分:1)
你不能在awk中使用shell变量
使用-v将值传递给awk变量
awk -v random=$random '{printf("%d%0.5d\n", $0,random )}'
-v random=$random
创建一个awk变量random
,并使用shell变量$random
<强>测试强>
$ cat test
#!/bin/bash
year_start=1900
year_end=2014
for(( year=$year_start; $year <= $year_end; year=`expr $year + 1` ))
do
for(( d=1; $d < 365; d=`expr $d + 1` ))
do
random=$RANDOM
echo $year| awk -v random=$random '{printf("%d%0.5d\n", $0,random )}'
done
done
$ bash test
190015628
190029371
190027290
190011319
190027379
190014108
190006841
190001113
190032492
190030980
190000745
190011316
190005771
190015510
190023285
190021061
190026820
^C