我有一个字符串列表,我想随机从该列表中获取字符串。你有没有人可以用perl或awk帮助我。
字符串列表:
John
Peter
Adam
Mike
Charlie
Sanders
William
...
输出:
Peter
Mike
Sanders
...
答案 0 :(得分:3)
我假设你在文件中有这些名字。
use File::Slurp qw(read_file);
use List::Util qw(shuffle);
print for (shuffle read_file 'the_input_file_name' )[0..499];
答案 1 :(得分:2)
List::Util
模块提供shuffle
运算符。它也是一个核心模块,因此不需要安装
use strict;
use warnings;
use List::Util 'shuffle';
open my $fh, '<', 'string_list.txt' or die $!;
my @names = <$fh>;
print for (shuffle @names)[0..499];
答案 2 :(得分:1)
使用您的文字创建一个文件,每行都有一个新单词。然后运行此脚本以从列表中选择一个选定的数字(下面的示例显示为5)。
#!/usr/bin/perl -l
sub random_words {
$random_items = $_[0];
open(DB, 'random-words.db');
@words = <DB>;
close DB;
for ($i=0; $i < $random_items; $i++) {
$random_index = int(rand(@words));
$random_word = $words[$random_index];
$random_word =~ s/\R//g;
print $random_word;
}
}
random_words(5);
答案 3 :(得分:0)
print splice(@a,rand(@a),1),"\n" while @a;
其中@a我们的列表g.e. 我的@a = qw / 约翰 彼得 亚当 麦克风 查理 桑德斯 威廉 /;