首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Unix命令行或shell脚本中混洗文本文件的行?

如何在Unix命令行或shell脚本中混洗文本文件的行?
EN

Stack Overflow用户
提问于 2010-01-28 18:49:09
回答 17查看 189.9K关注 0票数 310

我想随机排列一个文本文件的行,然后创建一个新文件。该文件可能有几千行。

我如何使用catawkcut等实现这一点?

EN

回答 17

Stack Overflow用户

发布于 2011-06-29 02:28:16

Perl单行程序是Maxim解决方案的一个简单版本

代码语言:javascript
运行
复制
perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);' < myfile
票数 89
EN

Stack Overflow用户

发布于 2010-01-28 21:10:13

我使用一个很小的perl脚本,我称之为"unsort":

代码语言:javascript
运行
复制
#!/usr/bin/perl
use List::Util 'shuffle';
@list = <STDIN>;
print shuffle(@list);

我还有一个空分隔符的版本,叫做"unsort0“...便于与find、-print0等一起使用。

PS:也投票给了“shuf”,我不知道这些天在coreutils里有这样的东西……如果你的系统没有“shuf”,上面的内容可能仍然有用。

票数 27
EN

Stack Overflow用户

发布于 2010-01-28 18:50:47

这里是第一次尝试,这在编码器上很容易,但在CPU上很难,它在每行前面加上一个随机数,对它们进行排序,然后从每行中剥离随机数。实际上,这些行是随机排序的:

代码语言:javascript
运行
复制
cat myfile | awk 'BEGIN{srand();}{print rand()"\t"$0}' | sort -k1 -n | cut -f2- > myfile.shuffled
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2153882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档