#!/bin/awk -f
#Function:指定使用文件中随机数量的行(手动传参ipl和idl)随机替换指定列(脚本中指定);使用指定位数的随机浮点替换指定列(脚本中指定)。
#Usage:./t.awk -v ip=<ip file> -v id=<id file> -v ipl=<n> -v idl=<n> log.txt
#Date: 20140922 20:16
BEGIN {
srand()
#读取预用的ip列表
while (getline randip < ip) {
#所有ip列表中的行数;该变量稍后供取ip列表中指定限制使用的随机行数用。
i++
randip_list[i] = randip
}
#读取预用的id列表
while (getline randid < id) {
#所有id列表中的行数;该变量稍后供取id列表中指定限制使用的随机行数用。
j++
randid_list[j] = randid
}
#以下两行:如果指定列表中要使用的行数大于实际行数则退出。
if (ipl > i) {exit}
if (idl > j) {exit}
#从ip列表总行数,取指定限制使用行的数量。
for (k=1; k<=ipl; k++) {
limitip_i[k] = 1 + int(rand() * i)
}
#从id列表总行数,取指定限制使用行的数量。
for (l=1; l<=idl; l++) {
limitid_i[l] = 1 + int(rand() * j)
}
}
{
#生成ip限制范围内的整数,作为上面限制行数组的下标。
randip_i = 1 + int(rand() * ipl)
#生成id限制范围内的整数,作为上面限制行数组的下标。
randid_i = 1 + int(rand() * idl)
#以下两行:使用限制的行随机替换ip和id。
$1 = randip_list[limitip_i[randip_i]]
sub(/loginID=[0-9]+/,"loginID="randid_list[limitid_i[randid_i]],$7)
sub(/tempid=0\.[0-9]+/,"tempid="sprintf("%.18f", rand()),$7)
print $0
}本文出自 “notepad” 博客,请务必保留此出处http://sndapk.blog.51cto.com/5385144/1558534
原文地址:http://sndapk.blog.51cto.com/5385144/1558534