如果您需要生成一个名称和地址列表来测试您正在处理的应用程序或脚本,Linux可以让这变得异常简单。有一个名为“rig”的命令可以创建姓名、地址和电话号码列表。据我所知,开箱即用,只适用于美国地址和区号。然而,如果情况确实如此,您也许能够解决这个问题。
要使用rig命令,只需在命令行中键入“rig”,就会生成一个名称和地址。您将看到如下内容:
$ rig
Mavis English
1015 Tulip St
Anderson, IN 46018
(317) xxx-xxxx
要生成包含多个地址的列表,请使用-c选项并指定要查看的地址数。
$ rig -c 3
Curt Rhodes
750 Orrand Dr
Kinston, NC 28501
(919) xxx-xxxx
Glenna Sheppard
531 Buncaneer Dr
Seattle, WA 98109
(206) xxx-xxxx
Georgina Burke
840 Plinfate St
Orlando, FL 32802
(407) xxx-xxxx
您可能已经注意到,这些身份记录中的电话号码有一个区号,但电话号码只有一系列的x。在这篇文章的后面,我将演示一种方法,你可以超越这一点。
如果出于某种原因,在生成的列表中只需要男性或女性姓名,则可以使用-m(男性)或-f(女性)选项。
$ rig -c 3 -m $ rig -f -c 3
Eduardo Mathis Alicia Lara
183 Kennel Ln 853 Willow Rd
Appleton, WI 54911 Roanoke, VA 24022
(414) xxx-xxxx (703) xxx-xxxx
Tristan Mckee Mindy Romero
608 Lake Dr 846 Burnet Dr
Miami, FL 33152 Emporia, KS 66801
(305) xxx-xxxx (316) xxx-xxxx
Randy Chavez Ina Morris
654 Bourg St 556 Cedarwood Ln
Spokane, WA 99210 Passadena, CA 91109 <== oops!
(509) xxx-xxxx (818) xxx-xxxx
很容易将输出重定向到一个文件以保存它以供您使用。
$ rig -c 100 > IDs
将rig命令放到脚本中可能会使它更易于使用,尽管它不会给命令添加太多内容。在这个gen\u random\u IDs脚本中,我们提示用户要生成的标识记录的数量,并将输出重定向到一个文件中。它使用bash PID来随机化文件名(例如IDs.3255),以降低同名文件已经存在的可能性。
#!/bin/bash
if [ $# == 0 ]; then
echo -n "number of records to generate> "
read num
else
num=$1
fi
rig -c $num > IDs.$$
echo "$num identity records are in the IDs.$$ file"
您还可以将装备命令转换为简单的bash别名:
alias genIDs='rig -c 1000 > IDs'
添加电话号码
如果你想看到电话号码代替所有的xxx-xxxx字符串,你可以做更多的工作来实现这一点。您可以创建随机的虚拟电话号码,以配合您的虚拟身份。在下一个脚本中,我使用一个名为RANDOM的内部bash函数来创建所需的数字,以替换rig提供的xxx-xxxx字符串。显示的语法是为了确保我们得到的数字字符串正好是3和4位数字。
该脚本使用rig命令生成身份列表,然后返回该列表,用生成的电话号码替换xxx-xxxx字符串。
#!/bin/bash
if [ $# == 0 ]; then
echo -n "number of IDs to generate> "
read num
else
num=$1
fi
if [ -f IDs ]; then
rm IDs
fi
rig -c $num > IDs.$$
while IFS= read -r line
do
if [[ $line == *"xxx-xxxx" ]]; then
areacode=`echo $line | cut -c1-5`
echo -n "$areacode " >> IDs
echo $((100 + RANDOM % 899))-$((1000 + RANDOM % 8999)) >> IDs
else
echo "$line" >> IDs
fi
done < IDs.$$
# remove temp file
rm IDs.$$
echo "Your generated identities are in the IDs file"
在gen_random_IDs脚本的第二个版本中,装备输出被写入IDs.$$文件,修改后的(最终)身份记录被写入IDs文件。脚本启动时存在的任何同名文件都将被删除。当然,欢迎您更改这些行为中的任何一个,以根据您的喜好调整脚本。
最后一个脚本的输出如下所示。请记住,电话号码是完全随机的,不太可能与所示城市的电话号码相似,尽管区号可能没问题。
$ cat IDs
Silvia Frederick
163 Shalton Dr
Beloit, WI 53511
(608) 776-7085
Mildred Joyner
116 Spring County Blvd
Albany, NY 12212
(518) 491-5250
走向国际
rig命令从/usr/share/rig中的文件获取它提供的信息。如果您希望它生成与其他国家相似的名称和地址,则可以替换这些文件的内容。另一方面,您的成功可能取决于地址与当前内容格式的匹配程度。rig命令似乎不能很好地处理城市名称中有一个以上的词,如“旧金山”或“纽约”。它也不太可能很好地处理包含多个组件的区号。
添加数据
rig使用的数据文件中的某些字段有多达1000个条目。我的系统显示:
$ cd /usr/share/rig
$ wc -l *
1000 fnames.idx <== 1,000 first names for women
1000 lnames.idx <== 1,000 last names
61 locdata.idx <== 61 cities and states
1000 mnames.idx <== 1,000 first names for men
60 street.idx <== 1,000 street names
3121 total
这意味着它可以产生多达200万个不同的名字。如果你这么想的话,没有理由不加更多。只需按照格式。