用随机字符

时间:2017-12-19 22:15:23

标签: bash sed command-line

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

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

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

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

以及如何使用以下方法生成随机数:

$ shuf -i MIN-MAX -n COUNT

我无法弄清楚如何输出在每个单词之间有随机数的一行命令。我仍在搜索,所以感谢任何花时间阅读我的问题的人。

2 个答案:

答案 0 :(得分:2)

Perl救援!

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

答案 1 :(得分: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")