2013-09-01 53 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