小编典典

如何使用Red Hat Linux上的标准工具将文件中的行随机化?

linux

如何使用Red Hat Linux上的标准工具将文件中的行随机化?

我没有shuf命令,所以我要寻找的东西像一个perlawk一个班轮是完成相同的任务。


阅读 225

收藏
2020-06-02

共1个答案

小编典典

而您可以获得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

未经测试,但有望奏效。

2020-06-02