2013-03-20 53 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