我需要通过修改现有文件中的字符串来生成新文件。
我有一个名为newheader.txt的文本文件,看起来像这样:
@RG ID:$FILENAME SM:$FILENAME
我还有一个名为filenames.txt的文本文件,如下所示:
ZF-150-81_S49
ZF-150-82_S55
ZF-150-83_S59
我希望有一个for循环,一次遍历filenames.txt并将newheader.txt中的$ FILENAME字符串替换为filenames.txt中的行,并将它们分别转换为新的.txt文件标题中带有该行。
这将创建三个输出文件。例如,第一个输出文件将称为ZF-150-81_S49.header.txt,其内部应如下所示:
@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 loops,但不是需要替换文本文件中的字符串的地方。如果这样做更有意义,则对其他解决方案(例如perl)感到高兴。感谢您的协助。
答案 0 :(得分:1)
类似这样的东西...(未经测试)
$ while read -r f; do sed 's/$FILENAME/'"$f"'/g' header > "$f".header; done < filename.list
答案 1 :(得分:1)
使用
for f in $(cat filename.txt); do
sed -e "s/\$FILENAME/${f}/g" newheader.txt >${f}.header.txt
done