Linux 中的随机身份生成

如果您需要生成名称和地址列表来测试您正在处理的应用程序或脚本,Linux 可以让这一切变得非常简单。有一个名为“rig”的命令可以创建姓名、地址和电话号码列表。据我所知,开箱即用,它仅适用于美国地址和区号。但是,如果情况确实如此,您或许可以解决此问题。

要使用rig命令,您只需在命令行中键入“rig”,就会生成一个名称和地址。你会看到这样的事情:

$钻机
梅维斯英语
郁金香街1015号
安德森,在 46018
(317) xxx-xxxx

要生成包含多个地址的列表,请使用-c选项并指定要查看的地址数。

$钻机-c 3
科特·罗兹
750 奥兰德博士
金斯顿,北卡罗来纳州 28501
(919) xxx-xxxx

格伦娜·谢泼德
第531章
西雅图, WA 98109
(206) xxx-xxx

乔治娜·伯克
普林法特街 840 号
佛罗里达州奥兰多市 32802
(407) xxx-xxx

您可能已经注意到,这些身份记录中的电话号码有一个区号,但电话号码只有一系列 x。在这篇文章的后面,我将演示一种可以超越这一点的方法。

 

如果出于某种原因,在生成的列表中只需要男性或女性姓名,则可以使用 -m(男性)或-f(女性)选项。

$钻机-c 3 -m $钻机-f -c 3
爱德华多·马西斯·艾丽西亚·拉拉
183 Kennel Ln 853 Willow Rd
阿普尔顿,威斯康星州 54911 罗阿诺克,弗吉尼亚州 24022
(414) xxx-xxxx (703) xxx-xxxx

特里斯坦·麦基明迪·罗梅罗
608 湖博士 846 伯内特博士
佛罗里达州迈阿密 33152 Emporia, KS 66801
(305) xxx-xxxx (316) xxx-xxxx

兰迪·查韦斯 伊娜·莫里斯
654 Bourg St 556 Cedarwood Ln
Spokane, WA 99210 Passadena, CA 91109 <== 哎呀!
(509) xxx-xxxx (818) xxx-xxxx

将输出重定向到文件以将其保存以供预期用途很容易。

$ rig -c 100 > ID

将您的装备命令放入脚本中可能会使其更易于使用,尽管它不会为命令添加太多内容。在这个gen_random_IDs脚本中,我们提示用户输入要生成的身份记录的数量,并将输出重定向到一个文件中。它使用 bash PID 来随机化文件名(例如 IDs.3255)以减少同名文件已经存在的可能性。

#!/bin/bash

如果 [ $# == 0 ]; 然后
    echo -n "要生成的记录数> "
    读取数
别的
    数量=$1
菲

rig -c $num > IDs.$$
echo "$num 身份记录在 IDs.$$ 文件中"

你也可以将你的装备命令变成一个简单的 bash 别名:

别名 genIDs='rig -c 1000 > IDs'

添加电话号码

如果您希望看到电话号码代替所有xxx-xxxx字符串,您可以做更多的工作来实现这一点。您可以创建随机的虚构电话号码以配合您的虚构身份。在下一个脚本中,我使用一个名为RANDOM的内部 bash 函数来创建所需的数字来替换rig提供的xxx-xxxx字符串。显示的语法旨在确保我们获得恰好包含 3 位和 4 位数字的数字字符串。

该脚本使用rig命令生成身份列表,然后返回列表以将xxx-xxxx 字符串替换为生成的电话号码。

#!/bin/bash

如果 [ $# == 0 ]; 然后
    echo -n "要生成的 ID 数量> "
    读取数
别的
    数量=$1
菲

如果 [ -f IDs ]; 然后
    rm ID
菲

rig -c $num > IDs.$$

而 IFS= 读取 -r 行
做
  if [[ $line == *"xxx-xxxx" ]]; 然后
    areacode=`echo $line | 切-c1-5`
    echo -n "$areacode " >> IDs
    回声 $((100 + RANDOM % 899))-$((1000 + RANDOM % 8999)) >> ID
  别的
    echo "$line" >> IDs
  菲
完成 < IDs.$$

# 删除临时文件
rm ID。$$

echo "您生成的身份在 IDs 文件中"

gen_random_IDs脚本的第二个版本中,钻机输出写入IDs.$$文件,修改后的(最终)身份记录写入 IDs 文件。脚本启动时存在的任何具有该名称的文件都会被简单地删除。当然,欢迎您更改任何此类行为,以根据您的喜好调整脚本。

最后一个脚本的输出将如下所示。请记住,电话号码是完全随机的,与所示城市中的电话号码不太可能相似,尽管区号可能没问题。

$ 猫 ID
西尔维娅·弗雷德里克
163 沙尔顿博士
贝洛伊特,WI 53511
(608) 776-7085

米尔德里德·乔伊纳
116 春县大道
纽约州奥尔巴尼 12212
(518) 491-5250

走向国际

钻机命令获取它在文件中提供的信息 在/ usr /共享/台。如果您希望它生成类似于另一个国家/地区的名称和地址,您可能会避免替换这些文件的内容。另一方面,您的成功可能取决于地址与当前内容格式的匹配程度。该钻机命令似乎并不与在他们不止一个字,如“旧金山”或“纽约”城市名处理好。它也不太可能处理包含多个组件的区号。

添加数据

对于某些字段,rig使用的数据文件有多达 1,000 个条目。我的系统上的计数显示:

$ cd /usr/share/rig
$ wc -l *
 1000 fnames.idx <== 1,000 个女性名字
 1000 lnames.idx <== 1,000 个姓氏
   61 locdata.idx <== 61 个城市和州
 1000 mnames.idx <== 1,000 个男人的名字
   60 street.idx <== 1,000 个街道名称
 共 3121 个

这意味着它可以生成多达 200 万个不同的名称。如果您如此倾向,没有理由不能添加更多。只需按照格式。

 相关实战:https://www.yunduoketang.com/article/xcxzxjiaoy.html
https://www.yunduoketang.com/article/zxjiaoyuwaz.html
https://www.yunduoketang.com/article/wkzboxt.html
https://www.yunduoketang.com/article/wszhiboskp.html

上一篇:增加WS_THICKFRAME以实现VC窗口拉大拉小功能


下一篇:【POJ 1080】 Human Gene Functions