2013-03-20 51 views
0

说注射文本我有两个文件: - data.txt中 - REPORT.TXTUNIX Shell脚本:当“文本模式”被发现

该报告包含一些“占位符”,例如文本:

HPLC results for sample: <insert-sample-id-here>, elements analyzed: <insert-element-name> 

数据文件包含了一系列“键/值”线:

sampleID: 123456abc 
elementName: genericThickeningAgent 

不是电脑高手在这里,但我知道的“查找和替换”任务可以通过自动化电脑;应该用什么样的命令“用我的数据文件中的匹配对的值替换占位符后重写report.txt”?

回答

0

在当前文件格式中,很难将数据文件中的值与报表文件中的占位符进行匹配,因为占位符<insert-sample-id-here>与data.txt中的sampleID不同。 <insert-element-name>不等于elementName

不过,假设你以不同的形式有data.txt

insert-sample-id-here: 123456abc 
insert-element-name: genericThickeningAgent 

(所以如果data.txt键在report.txt是匹配的占位符),你可以使用这个命令:

$ perl -ne 'print "s/<$1>/$2/g\n" if /^(.*?):\s+(.*)$/' data.txt | \ 
    xargs -I% perl -p -i -w -e "%" report.txt 

将取代所有在report.txt的占位符:

$ cat report.txt 
results for sample: 123456abc, elements analyzed: genericThickeningAgent 
+0

哇,这实际上超过了我的要求!我认为有必要为每一对编写“查找和替换”。我会看看是否可以更改报告模板。非常感谢您的解决方案,它非常好! – LabJem 2013-03-20 07:33:51