#!/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