2013-09-01 52 views
-1

我有一個命令:./start.sh versionAWK找到兩個模式和打印執行方式命令

我已指定版本的文件1.txt

some_pattern=something 
some_pattern=something 
Fix_Version=install_v.1 
some_pattern=something 
some_pattern=something 

有另一個文件install.sh執行該命令,但我想要的文件,以捕捉版本並執行命令。

somecommands 
somecommands 
(./start.sh version) 
somecommands 
somecommands 

所以,結果應該是這樣的:./start.sh install_v.1並執行它。從這兩個文件中只搜索./start.sh,install.sh1.txt查找版本並執行命令./start.sh install_v.1

+0

我明白你爲什麼來從'1.txt'價值,但爲什麼你要搜索線'(./start.sh版)在' install.sh只是爲了運行'./start.sh '當你可以立即運行它?請給出一個答案來澄清你的目的。 – konsolebox

+0

[匹配兩個模式執行命令]的可能重複(http://stackoverflow.com/questions/18551824/match-two-patterns-execute-the-command)。不要只是重新發布關閉的問題。 – Kevin

回答

1

使用此AWK:

awk -F '[ =]+' 'FNR==NR && $1=="Fix_Version"{ver=$2;next} FNR!=NR{if ($1~/start\.sh/) $0 = $1 " " ver ")"; print $0}' a.txt install.sh 
somecommands 
somecommands 
(./start.sh install_v.1) 
somecommands 
somecommands