我正在尝试使用bash脚本从已经创建的文件创建多个输出文件。除了创建10个输出文件外,我还想从原始文件中更改每个文件中的一段文本。
在原始文档中,起始行如下:
# For a single processor calculation
variable T equal 300 # Simulation temperature
variable salt equal 100.0 # Salt concentration [mM]
# Random number seed for Langevin integrator
variable random equal CPRAND
我想在创建的每个文件中将读取CPRAND的文本更改为随机数。
下面列出了我现在正在尝试使用的当前bash脚本:
for i in {0..10}
do
cat me.sh | sed ’s/CPRAND/$((1 + RANDOM % 1000))/g‘ > “RunFile$(printf “%03d” “$i”).in”
done
到目前为止,我无法让它能够用于创建多个文件。我对此表示感谢。
谢谢!
答案 0 :(得分:1)
您需要解释sed程序的内容,以便bash处理您正在执行的演算。另外,您可以避免使用多余的cat
和printf:
for i in {001..010}; do sed "s/CPRAND/$((1 + RANDOM % 1000))/" me.sh > RunFile${i}.in; done
答案 1 :(得分:0)
因为您使用的是GNU / Bash必须解释的指令,所以必须使用双引号而不是单引号,最后,工作指令可以是:
for i in {0..10}
do
cat me.sh | sed "s/CPRAND/$((1 + RANDOM % 1000))/g" > "RunFile$(printf "%03d" "$i").in"
done
答案 2 :(得分:0)
这可能对您有用(GNU sed和并行):
sql.js