0

我在文件中有一行,如下所示:

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

我想使用 ack 或 grep 或其他东西bar从该字符串中返回。到目前为止,我有:

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

但不知道如何让它只吐出第一个反向引用,而不是整行。

4

1 回答 1

0

也许perl可以帮助:

内容script.pl

use warnings;
use strict;

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

内容infile

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

像这样运行它:

perl script.pl infile

具有以下输出:

bar
于 2012-04-24T17:49:06.033 回答