快速解决方案:
您可以在 bash 中使用sort -R随机化行。tr将进行字符串替换。
例子:
echo ".." | tr -s " " "\n" | sort -R | tr "\n" " "; echo
将随机化一个由空格分隔的字符串。
另一种变化是将所有非字母数字字符转换为换行符
| tr -cs 'a-zA-Z0-9' '\n'
解释:
# tr -c all NOT matching
# tr -s remove all dublicates )
-> 随机化线条
| sort -R
-> 用空格替换所有换行符
| tr "\n" " "
-> 用 sed 删除最后一个空格
| sed "s/ *$//"
最后添加一个点(和一个换行符)
; echo "."
最后:从另一个句子中生成一个真正的新句子的函数
忽略重复空格并删除所有非字母数字的功能
阅读输出会让你听起来像尤达大师......
sentence="This sentence shall be randomized...really!"
echo $sentence | tr -cs 'a-zA-Z0-9' '\n' | sort -R | tr "\n" " " | sed "s/ *$//"; echo "."
输出示例:
randomized This shall be sentence really.
really be shall randomized This sentence.
...
补充:sed 解释
(我知道你想要它......)
sed "s/bla/blub/" # replace bla with blub
sed "s/bla*$/blub/" # replace the last occurence of bla with blub
sed "s/ *$//" # -> delete last space aka replace with nothing
只会洗牌。