Linux过河拆桥策略,2020-12-08 Linux shuf 过河拆桥策略

博客介绍了如何通过Linux命令行工具如`seq`、`shuf`、`awk`等实现随机数生成、加行号、排序及删除辅助列的功能,以替代`shuf`命令。作者探讨了在没有内置命令时如何创新,并提供了多个步骤的详细示例,展示了Linux命令行的灵活性和实用性。
摘要由CSDN通过智能技术生成

过河拆桥策略之随机化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 '{$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

排序:意思是,一行不能拆,原来在一行,现在,还在一行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值