我有一个字符串列表,我想从该列表中随机选取字符串。你能帮我用perl或awk吗?
字符串列表:
John
Peter
Adam
Mike
Charlie
Sanders
William
...
输出:
Peter
Mike
Sanders
...
我假设您在文件中有这些名称。
use File::Slurp qw(read_file);
use List::Util qw(shuffle);
print for (shuffle read_file 'the_input_file_name' )[0..499];
该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];
用你的单词创建一个文件,每行一个新单词。然后运行此脚本以从列表中选择一个选定的单词数(下面的示例显示 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);
print splice(@a,rand(@a),1),"\n" while @a;
其中@a 我们的列表 ge 我的@a = qw/ 约翰彼得亚当迈克查理桑德斯威廉/;