2020-12-08 Linux shuf 過河拆橋策略

過河拆橋策略之隨機化shuf

z@z-O-E-M:~/zshangke/20201208_suijihua$seq 5? |?shuf

1

3

5

2

4

z@z-O-E-M:~/zshangke/20201208_suijihua$seq 5? |?shuf

3

5

4

1

2


既然有了shuf做這個事情,為什么我們還要做?!


一:每次Linux升級時,加入將近1000個命令,全要背???10個命令來如意地實現shuf。

二:如果有個功能,沒人做過,怎么辦?習慣于把有的當沒有的來做了,哪里怕再來一個新的。


原始創新,教授和創新不等價。

思路:生成一列隨機數,加行號, 按隨機數排序,刪除隨機數。


1生成隨機數:

echo hi |awk 'END{for(i=0;i<5;i++) print rand();}'?或

echo"rand(5,1)"| octave 2> /dev/null | grep "0"?或是

dd if=/dev/urandom bs=1 count=5 2> /dev/null | xxd? | awk '{print $2$3$4}' | sed's/\(..\)/\1\n/g' | sed '/^$/d'?或是


2?加行號:

cat -n或是

grep . -n | sed 's/:/ /g'或是

awk '{printf NR" "; print $1}'或是


3?按隨機數排序:只有sort -k 2


4?刪除第2列(即隨機數):

awk '{print$1}'??或

awk '{$2=""; print $0}'?讓第二列為空,再打印整個行的內容



再講一次:

z@z-O-E-M:~/zshangke/20201208_suijihua$echo "rand(5,1)"| octave 2> /dev/null | grep "0"?生成隨機數,

?? 0.84996

?? 0.66578

?? 0.64094

?? 0.40795

?? 0.69908

z@z-O-E-M:~/zshangke/20201208_suijihua$echo "rand(5,1)" | octave 2> /dev/null | grep "0"?? |?cat –n?加行號,

?1???? 0.66143

?2???? 0.48947

?3???? 0.49861

?4???? 0.89093

?5???? 0.15336

z@z-O-E-M:~/zshangke/20201208_suijihua$echo "rand(5,1)" | octave 2> /dev/null | grep "0"?? |? cat-n? |?sort -k?2 -g

?5???? 0.15336

?2???? 0.48947

?3???? 0.49861

?1???? 0.66143

?4???? 0.89093

排序:意思是,一行不能拆,原來在一行,現在,還在一行。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容