这是代码。我只是想用随机值打印另一列。
value=$RANDOM
awk -v numColumns=$numColumns -v value=$value '{
if ($1 !~ /\#/ && $1 !~ /^$/)
{
$(NF+1) = "$value"
print $0
}
}' $infile > $outfile
代码在它添加的最后一列中打印$ value,而不是打印随机数。 这是bashscript中的ak脚本。该文件是filename.bsh,如果相关的话。
答案 0 :(得分:2)
<强>已更新强>
不需要IMHO传递随机值。它可以在gawk内生成。
awk 'BEGIN{srand();R=int(rand()*32768)}{print $0, R}' <<XXX
one
One Two
ONE TWO THR
XXX
输出是:
one 31122
One Two 31122
ONE TWO THR 31122
如果您需要浮点随机值([0, 1)
),则可以使用:
awk 'BEGIN{srand();R=rand()}{print $0, R}'
输出:
one 0.878804
One Two 0.878804
ONE TWO THR 0.878804
如果您需要更多十进制数字,可以使用
awk 'BEGIN{printf("%.16f", rand())}'
或
awk 'BEGIN{OFMT="%.16f";print rand()}'
也许你想为每一行添加不同的随机数:
awk 'BEGIN{srand()}{print $0, int(rand()*32768)}' <<XXX
one
One Two
ONE TWO THR
XXX
输出:
one 29633
One Two 26052
ONE TWO THR 23050
答案 1 :(得分:1)
尝试进行以下更改:
$(NF+1) = "$value" -> $(NF+1) = value
修改
供参考:
kent$ val=$RANDOM
kent$ echo $val
26521
kent$ echo "a b c d"|awk -v value=$val '{$(NF+1)=value;print $0}'
a b c d 26521