所以我有以下輸出這一功能:Bash-爭奪字符
AGsg4SKKs74s62#
我需要找到一種方法來擾亂字符,但不刪除anything..aka所有字符必須爲後存在我爭搶他們。
我只能打包包括awk和sed在內的實用程序。
所以我有以下輸出這一功能:Bash-爭奪字符
AGsg4SKKs74s62#
我需要找到一種方法來擾亂字符,但不刪除anything..aka所有字符必須爲後存在我爭搶他們。
我只能打包包括awk和sed在內的實用程序。
echo 'AGsg4SKKs74s62#' | sed 's/./&\n/g' | shuf | tr -d "\n"
輸出(例如):
S7s64#2gKAGsKs4
我知道你有沒有提到Perl的,但它可以做這樣的:
perl -MList::Util=shuffle -F'' -lane 'print shuffle @F' <<<"AGsg4SKKs74s62#"
-a
啓用自動拆分模式和-F''
將字段分隔符設置爲空字符串,以便每個字符進入單獨的數組元素。該陣列使用由核心模塊List::Util
提供的功能進行混洗。
+1不錯的Perl .. – 2014-10-12 15:08:57
這裏是一個純粹的bash函數,沒有工作:
scramble() {
# $1: string to scramble
# return in variable scramble_ret
local a=$1 i
scramble_ret=
while((${#a})); do
((i=RANDOM%${#a}))
scramble_ret+=${a:i:1}
a=${a::i}${a:i+1}
done
}
看看它的工作原理:
$ scramble 'AGsg4SKKs74s62#'
$ echo "$scramble_ret"
G4s6s#2As74SgKK
看上去一切正常。
謝謝!這工作很好。 – 2014-10-12 15:09:50
如果有單詞,我們如何才能將單詞洗牌並且不將單詞分解成字符? – thevoipman 2015-06-22 22:48:53
@thevoipman:請開始一個新的問題。謝謝。 – Cyrus 2015-06-23 05:57:35