1

我有一个字符串列表,我想从该列表中随机选取字符串。你能帮我用perl或awk吗?

字符串列表:

John
Peter
Adam
Mike
Charlie
Sanders
William
...

输出:

Peter
Mike
Sanders
...
4

4 回答 4

3

我假设您在文件中有这些名称。

use File::Slurp qw(read_file);
use List::Util qw(shuffle);
print for (shuffle read_file 'the_input_file_name' )[0..499];
于 2012-08-16T18:42:36.387 回答
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];
于 2012-08-16T18:43:13.437 回答
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);
于 2012-08-16T18:34:23.053 回答
0
print splice(@a,rand(@a),1),"\n" while @a;

其中@a 我们的列表 ge 我的@a = qw/ 约翰彼得亚当迈克查理桑德斯威廉/;

于 2012-08-16T19:53:31.717 回答