在bash脚本中我想从输入文件中挑出N个随机行并输出到另一个文件.如何才能做到这一点?
我需要在2000-65000shell脚本之间生成一个随机端口号.问题是$RANDOM15位数,所以我卡住了!
PORT=$(($RANDOM%63000+2001)) 如果不是因为尺寸限制,它会很好地工作.
有没有人有一个如何做到这一点的例子,可能是从/dev/urandom一个范围内提取并得到它?
关注这个问题,我需要n从文件(或stdin)中随机获取完整的行.这将类似于head或tail,除了我想从中间的一些.
现在,除了使用链接问题的解决方案循环文件之外,n在一次运行中获得精确线条的最佳方法是什么?
作为参考,我试过这个:
#!/usr/bin/perl -w
use strict;
my $ratio = shift;
print $ratio, "\n";
while () {
print if ((int rand $ratio) == 1);
}
Run Code Online (Sandbox Code Playgroud)
$ratio我想要的线的粗略百分比在哪里.例如,如果我想要10行中的1个:
random_select 10 a.list
Run Code Online (Sandbox Code Playgroud)
但是,这并没有给我一个确切的数额:
aaa> foreach i ( 0 1 2 3 4 5 6 7 8 9 )
foreach? random_select 10 a.list | wc -l
foreach? end
4739
4865
4739
4889
4934
4809
4712
4842
4814
4817
Run Code Online (Sandbox Code Playgroud)
另一个想法是啜饮输入文件,然后n从数组中随机选择,但如果我有一个非常大的文件,这是一个问题. …
如何n从无法放入内存的非常大的文件中获取随机行。
如果我可以在随机化之前或之后添加过滤器也很棒。
就我而言,规格是:
所以从文件中丢失几行不会是一个大问题,因为无论如何它们都有 1 万分之一的机会,但性能和资源消耗将是一个问题
我正在创建一个随机剥离不同MAC地址的代码,但无法弄清楚如何执行此操作.我对如何处理这个问题的想法是使用这个脚本随机化或重新排列文本文件中MAC地址的顺序,但我无法弄清楚如何使用批处理文件执行此操作.这将如何工作,它将读取"maclist.txt",然后使用随机顺序"maclist_temp.txt"创建一个新的临时文件,该文件将是重新排列的文件.然后,它将按顺序提取此随机文件.
我曾尝试使用Google并在网上搜索,但我没有找到任何有用的东西.我仍在积极寻找,但任何建议都非常有用.
像提取和删除随机行然后添加到底部这样简单的事情可能会起作用.虽然随机化会更好,但我想保留原始列表.就像是:
这就是我想要的,但欢迎任何建议.