通过正则表达式从配置中获取别名(坏分隔)

时间:2010-10-04 19:21:46

标签: regex bash config

我试图在一个简短的bash脚本中从特定的配置文件中获取一些别名。配置如下:

[other config]

[alias]
alias: command -o option
alias2: command -l 2
alias3: command -o option

[other config]

你如何将这些别名分开?我更喜欢这样的输出:

alias: command -o option
alias2: command -l 2
alias3: command -o option

我已经做了一些不好的事情,比如获取行号等等...... 有任何想法吗?太棒了!

2 个答案:

答案 0 :(得分:0)

Perl有一个Config::GitLike模块,可以用来解析那个git配置文件。

查看文档,您希望这样做:

#!perl -w

use strict;
use 5.010;
use Config::GitLike;

my $c = Config::GitLike->new(confname => 'config');
$c->load;

my $alias = $c->get( key => 'alias.alias' );
my $alias2 = $c->get( key => 'alias.alias2' );
my $alias3 = $c->get( key => 'alias.alias3' );

say "alias: $alias";
say "alias2: $alias2";
say "alias3: $alias3";

答案 1 :(得分:0)

您可以使用sed执行此操作:

sed -n -e '/\[alias\]/,/\[.*\]/s/:/:/p'

这将打印[alias]与包含[]的下一行之间的所有行,其中包含冒号。