用随机字符替换文本文件中的字符串

问题描述 投票:0回答:2

所以我要做的就是:我一直在使用keybr.com来提高我的打字技巧,在这个网站上你可以“提供你自己的自定义文本”。现在我一直在用书中的章节来打字,所以它比仅仅输入一组字母更有趣。现在我想在文本中插入数字。具体来说,每个单词之间都有类似“393”的东西,随机集比那个例子更小更大。

所以我把一本书的章节保存到我家文件夹的文件中。现在我只需要一个命令来搜索空格并输入一组数字并添加一个空格,这样一句话就像这样:293狗328是102黑色。 334 ......等等

我通过搜索引擎查找了linux命令,我发现如何用以下文件替换文本文件中的字符串:

sed -i's / original / new / g'file.txt

以及如何生成随机数:

$ shuf -i MIN-MAX -n COUNT

我只是想不出如何输出一行命令,在每个单词之间有随机数。我还在搜索,所以感谢任何花时间阅读我的问题的人。

bash sed command-line
2个回答
2
投票

Perl救援!

perl -pe 's/ /" " . (100 + int rand 900) .  " "/ge' < input.txt > output.txt
  • -p逐行读取输入,读取一行后,它运行代码并将行打印到输出
  • s///类似于你从sed知道的替换
  • /g意味着全球化,即它尽可能多地替代
  • /e表示替换部分是要运行的代码。在这种情况下,代码生成一个随机数(100-999)。

0
投票

鉴于:

$ echo "$txt" 
Here is some random words. Please 
insert a number a space between each one.

这是一个简单的awk来做到这一点:

$ echo "$txt" | awk '{for (i=1;i<=NF;i++) printf "%s %d ", $i, rand()*100; print ""}'
Here 92 is 59 some 30 random 57 words. 74 Please 78 
insert 43 a 33 number 77 a 10 space 78 between 83 each 76 one. 49 

纯粹的Bash中大致相同:

while read -r line; do
    for word in $line; do
        printf "%s %s" "$word $((1+$RANDOM % 100))"
    done
    echo
done < <(echo "$txt")   
© www.soinside.com 2019 - 2024. All rights reserved.