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

我没有shuf命令,所以我正在寻找类似perlawk的一行程序来完成相同的任务.

推荐答案

还有一个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

未经测试,但希望有效.

Linux相关问答推荐

如何检测文件系统是否支持权限?

如何将参数传递给Bash函数

在 bash 中使用 tee 时如何返回错误代码

需要获取文件名、行号、模式在文件中的匹配位置

X86 程序集 - struct 点 - 存储/返回不正确?

使用 sed 或 awk 格式化文本

如何使用netcat为DPDK实例提供输入?

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

c++进程状态中的+是什么意思

在 Linux 中 Select 多个同名的可执行文件

如何将文件从 Vagrant 机器复制到 localhost

禁用内存地址的随机化

更改核心转储的位置

如何分析内存使用情况?

Linux上C中的标准输出线程安全?

从 FTP 服务器下载所有文件

我可以告诉 Linux 不要换出特定进程的内存吗?

zsh:找不到命令 laravel

如何将文件夹中的文件列表发送到Linux中的txt文件

Linux:删除多个文件的文件扩展名