在BASH shell中混洗数组元素的简单方法?

前端之家收集整理的这篇文章主要介绍了在BASH shell中混洗数组元素的简单方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以在 PHP中执行此操作,但我尝试在BASH shell中工作.我需要取一个数组,然后随机地重新打包内容并将其转储到somefile.txt.

所以给定阵列Heresmyarray,元素a; b; c; d; e; f;它会产生一个输出文件output.txt,它包含元素f; c; b; a; e; d;

元素需要保留分号分隔符.我已经看过很多bash shell数组操作,但似乎没有什么比这个简单的概念更接近.感谢您的任何帮助或建议!

如果您只想将它​​们放入文件中(使用重定向>)
$echo "a;b;c;d;e;f;" | sed -r 's/(.[^;]*;)/ \1 /g' | tr " " "\n" | shuf | tr -d "\n"
  d;a;e;f;b;c;

$echo "a;b;c;d;e;f;" | sed -r 's/(.[^;]*;)/ \1 /g' | tr " " "\n" | shuf | tr -d "\n" > output.txt

如果要将项目放在数组中

$array=( $(echo "a;b;c;d;e;f;" | sed -r 's/(.[^;]*;)/ \1 /g' | tr " " "\n" | shuf | tr -d " " ) )
$echo ${array[0]}
e;
$echo ${array[1]}
d;
$echo ${array[2]}
a;

如果您的数据有& #abcde;

$echo "a;&#abcde;c;d;e;f;" | sed -r 's/(.[^;]*;)/ \1 /g' | tr " " "\n" | shuf | tr -d "\n"
d;c;f;&#abcde;e;a;
$echo "a;&#abcde;c;d;e;f;" | sed -r 's/(.[^;]*;)/ \1 /g' | tr " " "\n" | shuf | tr -d "\n"
&#abcde;f;a;c;d;e;

猜你在找的Bash相关文章