我可以在
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;