For bash中的循环替换文本文件中的字符串

For bash中的循环替换文本文件中的字符串,bash,for-loop,replace,Bash,For Loop,Replace,我需要通过修改现有文件中的字符串来生成新文件 我有一个名为newheader.txt的文本文件,它如下所示: @RG ID:$FILENAME SM:$FILENAME ZF-150-81_S49 ZF-150-82_S55 ZF-150-83_S59 @RG ID:ZF-150-81_S49 SM:ZF-150-81_S49 我还有一个名为filenames.txt的文本文件,如下所示: @RG ID:$FILENAME SM:$FILEN

我需要通过修改现有文件中的字符串来生成新文件

我有一个名为newheader.txt的文本文件,它如下所示:

@RG     ID:$FILENAME     SM:$FILENAME
ZF-150-81_S49
ZF-150-82_S55
ZF-150-83_S59
@RG     ID:ZF-150-81_S49     SM:ZF-150-81_S49
我还有一个名为filenames.txt的文本文件,如下所示:

@RG     ID:$FILENAME     SM:$FILENAME
ZF-150-81_S49
ZF-150-82_S55
ZF-150-83_S59
@RG     ID:ZF-150-81_S49     SM:ZF-150-81_S49
我希望有一个for循环,每次遍历filenames.txt一行,并将newheader.txt中的$FILENAME字符串替换为filenames.txt中的行,并将每个字符串转换为一个新的.txt文件,并在标题中使用该行

这将创建三个输出文件。例如,第一个输出文件名为ZF-150-81s49.header.txt,其内部应如下所示:

@RG     ID:$FILENAME     SM:$FILENAME
ZF-150-81_S49
ZF-150-82_S55
ZF-150-83_S59
@RG     ID:ZF-150-81_S49     SM:ZF-150-81_S49
换句话说,类似于:

for $FILENAME in filename.txt; do replace $FILENAME in newheader.txt > $FILENAME.header.txt ; done
我已经完成了bash for循环,但不需要替换文本文件中的字符串。如果这更有意义的话,欢迎使用其他解决方案,如perl。谢谢你的帮助。

像这样的事情。。。(未测试)

$whileread-rf;执行sed的/$FILENAME/'“$f”'/g”标题>“$f”。标题;完成
类似这样的东西。。。(未测试)

$whileread-rf;执行sed的/$FILENAME/'“$f”'/g”标题>“$f”。标题;完成
使用

使用


sed
是通用替换命令。
sed
是通用替换命令。