Bash脚本用于多个输出文件

时间:2018-10-23 13:07:25

标签: bash sed

我正在尝试使用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

到目前为止,我无法让它能够用于创建多个文件。我对此表示感谢。

谢谢!

3 个答案:

答案 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