如何使用 sed 在文件中匹配字符串时用随机数修改行的最后 3 位数字

如何使用 sed 在文件中匹配字符串时用随机数修改行的最后 3 位数字

我有一个文件“a.txt”,其内容如下:

K8A2-19C204-BA109691  
ML_18.10.4-109691  

我如何在文件中搜索字符串“ML_”,如果匹配,则使用 bash 脚本中的“sed”命令将该行的最后 3 位数字修改为一些随机数字。
我可以使用以下命令将最后 3 位数字更改为一些固定数字:

sed -i '/ML_/s/[0-9][0-9][0-9]$/012/' file_name  

但不确定如何用随机数改变

答案1

如果你对随机性没有任何特殊要求,那么你可以使用RANDOM评论中提到的内置 bash shell,例如

$ sed '/^ML_/ s/[0-9]\{3\}$/'$(printf '%03d' $((RANDOM%1000)))'/' a.txt 
K8A2-19C204-BA109691
ML_18.10.4-109133

如果您需要“更好”的随机数,那么我建议放弃sedperl寻找合适的随机数模块。

相关内容