繁体   English   中英

尝试用/ dev / random hex替换两个字符串

[英]Attempting to replace two character string with /dev/random hex

字符串示例

CA DA 00 17 11 38 88 C5 03 

所需的输出

 AB 3C 6C 8F DA 88 24 78 6C

尝试命令

 $ tr -dc 0-9A-F < /dev/urandom filename  ## prints too many chars

awk '{gsub(length($1)==2,{printf "%02")}}' filename  ## syntax doesn't work, unsure how to add hex

 $ sed 's/[a-z0-9]\{2\}//g' filename  ## only replaces digits, unsure how to add hex as a replacement

我最终使用vim对某种程度的随机化进行了部分转换。

 :s/\d\d/AA/g

谁能提供可行的解决方案?

很高兴看到利用tr / awk / sed进行知识共享的解决方案(和解释)。

谢谢。

用awk替换一个随机的两位数的十六进制数字的每个字段只是:

$ awk -v seed="$RANDOM" 'BEGIN{srand(seed)} {for (i=1; i<=NF; i++) $i=sprintf("%02X",rand()*256)} 1' file
C7 A1 02 1A 4A 94 95 A0 1E

$ awk -v seed="$RANDOM" 'BEGIN{srand(seed)} {for (i=1; i<=NF; i++) $i=sprintf("%02X",rand()*256)} 1' file
1C 50 A9 D3 8B B0 24 9C 14

希望它在做什么很明显。

这是有关如何获取随机十六进制(mac地址)的想法。

awk -v seed=$RANDOM '
    BEGIN{
        srand(seed);
        split("0 1 2 3 4 5 6 7 8 9 A B C D E F",hex," ");
        for (i=1; i<=6; i++) 
            printf "%s%s ",hex[int(rand()*16)+1],hex[int(rand()*16)+1];
        print ""
    }'
D8 D9 BA 00 6A C6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM