首页 > 代码库 > awk: 随机替换(使用文件中的行随机替换另一文件中的列)
awk: 随机替换(使用文件中的行随机替换另一文件中的列)
#!/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
awk: 随机替换(使用文件中的行随机替换另一文件中的列)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。