2012-04-24 49 views
0

我有看起来像这样的一个文件中的行:如何用ack(或等价物)返回一部分字符串?

$db['foo']['database'] = 'bar'; 

我想用ACK或grep的什么返回bar出该字符串的。到目前为止,我有:

ack '^\$db\['\''foo'\''\]\['\''database'\''\] = '\''([\w_]+)'\' $file 

但不知道如何得到它吐出只是第一个反向引用,而不是整条生产线。

+0

你别管了,这是在回答http://stackoverflow.com/questions/4222727/how-to-use-named-regex-groups-in-ack-output – futuraprime 2012-04-24 16:22:24

回答

0

也许perl可以帮助:

内容的

script.pl

内容 infile
use warnings; 
use strict; 

while (<>) { 
     printf qq[%s\n], $1 if m/\A\$db\['foo'\]\['database'\]\s*=\s*'([^']+)'.*\Z/; 
} 

$db['foo']['database'] = 'bar'; 

运行它想:

perl script.pl infile 

有了以下的输出:

bar 
相关问题