用特定的限制替换随机位置的值

用特定的限制替换随机位置的值

我需要将一列中 10% 的数字随机替换为其他特定数字。例如,除了第一个位置之外,随机用“1”替换任何数字的 10%

在文件1.txt中

1 1234567890
2 0987654321

输出文件2.txt

1 1234561890
2 0987651321

答案1

将以下脚本保存为repwith1.sh:

cat | while read procl
  do echo -n "${procl:0:1}"
     for i in `seq 1 $((${#procl}-1))`
       do if [ $((RANDOM%10)) -eq 1 ]
             then if echo "${procl:$i:1}" | grep -q "[0-9]"
               then echo -n "1"
               else echo -n "${procl:$i:1}"
             fi
             else echo -n "${procl:$i:1}"
          fi
       done
     echo ""
  done

像这样使用它:

$ cat (file name) | bash repwith1.sh

如果您想保存到文件,请执行以下操作:

$ cat (file name) | bash repwith1.sh > (new file name)

相关内容