我想随机排列一个文本文件的行,然后创建一个新文件。该文件可能有几千行。
我如何使用cat、awk、cut等实现这一点?
发布于 2011-06-29 02:28:16
Perl单行程序是Maxim解决方案的一个简单版本
perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);' < myfile发布于 2010-01-28 21:10:13
我使用一个很小的perl脚本,我称之为"unsort":
#!/usr/bin/perl
use List::Util 'shuffle';
@list = <STDIN>;
print shuffle(@list);我还有一个空分隔符的版本,叫做"unsort0“...便于与find、-print0等一起使用。
PS:也投票给了“shuf”,我不知道这些天在coreutils里有这样的东西……如果你的系统没有“shuf”,上面的内容可能仍然有用。
发布于 2010-01-28 18:50:47
这里是第一次尝试,这在编码器上很容易,但在CPU上很难,它在每行前面加上一个随机数,对它们进行排序,然后从每行中剥离随机数。实际上,这些行是随机排序的:
cat myfile | awk 'BEGIN{srand();}{print rand()"\t"$0}' | sort -k1 -n | cut -f2- > myfile.shuffledhttps://stackoverflow.com/questions/2153882
复制相似问题