根据字典生成特定大小的文本文件(可读)文件

2024-05-28 19:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有一个bash命令(或者另一个python模块)来从另一个文件(例如,英语词典或圣经)中包含的随机单词生成一个特定大小的大文件(例如,1GB)。在

示例输入

Hello world.
How are you?
I am doing fine.

输出文件通常应大于“字典”输入文件。在

理想情况下,我希望台词不要重复。在

输出示例:

^{pr2}$

上面的输出是原始文件大小的两倍(抱歉,如果我跳过了一个单词或标点符号,我是手工完成的),但它只以随机顺序包含在文件中。在

我已经尝试过shuf和truncate命令作为类似任务的解决方案,但我不确定它们是否具备处理此问题的所有属性。在


Tags: 模块文件命令bashyou示例helloworld
1条回答
网友
1楼 · 发布于 2024-05-28 19:30:32

这里有一个你想要什么的概念。它将创建您需要的文件,而不会在一行中重复一行两次。唯一的问题是它不会正好是1GB。它将有几个字节以上。在

#!/bin/bash

touch some_output.txt

stream_of_words=$(cat words.txt | tr '\n' '|' | sed 's/|$//g')
qty_of_words=$( echo "$stream_of_words" | awk -F'|' '{ print NF }' )
last_number_used=1
random_number=1
limit_in_bytes=1073741824
size_of_file=$( wc -c some_output.txt | awk '{print $1}' )

echo "qty_of_words : $qty_of_words "
echo "size_of_file : $size_of_file"

while [[ $size_of_file -lt $limit_in_bytes ]]
do

    while [[ $random_number == $last_number_used ]]
    do
        random_number=$( awk -v qty="$qty_of_words" 'BEGIN { srand(); random_number=( int( rand() * 10000000 ) % qty ) + 1; print random_number }' )
    done

    last_number_used=$random_number
    random_word=$( awk -v arr="$stream_of_words" -v rnd="$random_number" 'BEGIN { srand(); arr_length=split(arr,list,"|"); print list[rnd] }' )
    echo "$random_word" 
    echo "$random_word" >> some_output.txt

    size_of_file=$( wc -c some_output.txt | awk '{print $1}' )

    sleep 1
done

这是我使用的输出,但如果需要,可以将其更改为短语:

^{pr2}$

问候!在

相关问题 更多 >

    热门问题