!/bin/bash
for file in ~/tdg/*.TXT
do
while read p; do
randvalue=`shuf -i 1-99999 -n 1`
sed -i -e "s/55555/${randvalue}/" $file
done < $file
done
Run Code Online (Sandbox Code Playgroud)
这是我的脚本。每次找到它时,我都试图用不同的随机数替换 55555。这目前有效,但它用相同的随机数替换了 55555 的每个实例。我试图用 $p 替换 sed 命令末尾的 $file ,但这只是失败了。
真的,即使我说到点是同一行上的每个实例都具有相同的随机数,但是每行使用一个新的随机数,那么我会很高兴。
编辑
我应该指定这一点。我想将替换的结果实际保存在文件中,而不仅仅是将结果打印到控制台。
编辑
在 JNevill 的出色帮助之后,我的脚本的最终工作版本:
!/bin/bash
for file in ~/tdg/*.TXT
do
while read p;
do
gawk '{$0=gensub(/55555/, int(rand()*99999), "g", $0)}1' $file > ${file}.new
done < $file
mv -f ${file}.new $file
done
Run Code Online (Sandbox Code Playgroud)