如何在Red Hat Linux上使用标准工具将文件中的行随机化?
我没有shuf
命令,所以我正在寻找类似perl
或awk
的一行程序来完成相同的任务.
如何在Red Hat Linux上使用标准工具将文件中的行随机化?
我没有shuf
命令,所以我正在寻找类似perl
或awk
的一行程序来完成相同的任务.
还有一个Perl一行程序!
perl -MList::Util -e 'print List::Util::shuffle <>'
它使用一个模块,但该模块是Perl代码发行版的一部分.如果这还不够好,你可以考虑自己滚动.
我试着用-i
标记("原地编辑")来编辑文件.文档建议它应该可以工作,但它没有.它仍然会将经过洗牌的文件显示给stdout,但这次它会删除原始文件.我建议你不要用它.
考虑shell脚本:
#!/bin/sh
if [[ $# -eq 0 ]]
then
echo "Usage: $0 [file ...]"
exit 1
fi
for i in "$@"
do
perl -MList::Util -e 'print List::Util::shuffle <>' $i > $i.new
if [[ `wc -c $i` -eq `wc -c $i.new` ]]
then
mv $i.new $i
else
echo "Error for file $i!"
fi
done
未经测试,但希望有效.