【问题标题】:How to shuffle multiple files and save different files? [duplicate]如何随机播放多个文件并保存不同的文件? [复制]
【发布时间】:2018-07-21 05:39:24
【问题描述】:

我有三个文件:

文件1 文件2 文件3

A  BB  C

D  EE  F

G  H  我

每个文件中的行相互关联。 因此,我想生成洗牌文件为:

file1.shuf file2.shuf file3.shuf

G      H    我

D     E     F

A     B     C

我经常遇到这种问题,我总是用 Ruby 或 Python 编写一个小脚本,但我认为可以通过一些简单的 shell 命令来解决。 您能否建议任何通过 shell 命令或脚本执行此操作的简单方法?

【问题讨论】:

    标签: shell shuffle


    【解决方案1】:

    这是一个简单的脚本,可以满足您的需求。指定所有输入 命令行上的文件。它假设所有文件都具有相同的 行数。

    首先,它创建一个数字列表并将其随机排列。然后它结合 每个输入文件中的这些数字,对其进行排序并删除这些数字。 因此,每个输入文件都以相同的顺序打乱。

    #!/bin/bash
    
    # Temp file to hold shuffled order
    shuffile=$(mktemp)
    
    # Create shuffled order
    lines=$(wc -l < "$1")
    digits=$(printf "%d" $lines | wc -c)
    fmt=$(printf "%%0%d.0f" $digits)
    seq -f "$fmt" $lines | shuf > $shuffile
    
    # Shuffle each file in same way
    for fname in "$@"; do
        paste $shuffile "$fname" | sort | cut -f 2- > "$fname.shuf"
    done
    
    # Clean up
    rm $shuffile
    

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多