循环覆盖文件

问题描述 投票:0回答:1

我需要在目录中的数千个文件上运行命令。但是,我正在使用的程序需要一个参数文件,在该文件上指示输入和输出的名称。命令如下:

./program parameters_file.txt

这些是我需要在parameters_file.txt上进行编辑的行,即1-3行。其余各行(未显示)保持不变:

 input_file = asd123.OK 
 input_file2 = asd123.TXT    
 outfile = asd123.RESULTS_OUT          

如图所示,所有文件都具有匹​​配的名称,只有扩展名更改。

我需要对此进行循环,以便每次重新启动循环时都覆盖input_file,input_file2和outfile。类似的内容:使用第一个文件名编辑parameters_file.txt,在第一个文件上运行命令,使用第二个文件名编辑parameter_file.txt,在第二个文件上运行命令,等等。

思考:

for f in *.OK;
do
     input_file = $f 
     input_file2 = $f.TXT    
     outfile = $f.RESULTS_OUT 

但是我不知道如何将其合并到命令中,并且我无法在parameters_file.txt中编写循环,因为它会使程序崩溃。也许回显parameter_file.txt或用sed覆盖?

谢谢。

bash text-processing
1个回答
0
投票

执行创建输入参数文件的循环,然后运行程序:

for f in *.OK;
do
    echo "input_file = $f" > parameters
    "input_file2 = $f.TXT" >> parameters
    "outfile = $f.RESULTS_OUT" >> parameters
    # Add/copy/incorporate the rest of the parameters as you wish

    ./program parameters
done
© www.soinside.com 2019 - 2024. All rights reserved.